csi --- เซ็นเซอร์กล้อง¶
โมดูล csi คือส่วนต่อประสานเชิงวัตถุสมัยใหม่สำหรับเซ็นเซอร์กล้องบน OpenMV Cam แต่ละเซ็นเซอร์ฟิสิกส์จะถูกแทนด้วยอินสแตนซ์ CSI ดังนั้นบอร์ด multispectral imager ที่จับคู่เซ็นเซอร์สีกับเซ็นเซอร์ความร้อนหรือเซ็นเซอร์เหตุการณ์สามารถควบคุมแต่ละตัวได้อย่างอิสระโดยส่ง cid ที่แตกต่างกันไปยัง constructor กล้องที่มีเซ็นเซอร์เดียวจะสร้างอินสแตนซ์ CSI เพียงตัวเดียว
อ็อบเจกต์ CSI ครอบครองการกำหนดค่าเซ็นเซอร์ทั้งหมด ได้แก่ รูปแบบพิกเซล ขนาดเฟรม/หน้าต่าง การเปิดรับแสง/ค่าเกน/ไวท์บาลานซ์ การสะท้อนและพลิกด้วยฮาร์ดแวร์ รูปแบบทดสอบแถบสี นาฬิกาอัตราเฟรม ROI สำหรับการเปิดรับแสงอัตโนมัติ และคำสั่ง ioctl เฉพาะชิป เฟรมจะถูกจับด้วย CSI.snapshot() ซึ่งคืนค่า image.Image ที่สนับสนุนโดยบัฟเฟอร์เฟรม
โมดูลนี้แทนที่โมดูล sensor รุ่นเก่า (ซึ่งเปิดเผยฟังก์ชันเดียวกันในรูปแบบฟังก์ชันระดับโมดูลที่ผูกกับเซ็นเซอร์ที่ซ่อนอยู่ตัวเดียว) โค้ดใหม่ควรใช้ CSI
ตัวอย่างการใช้งาน:
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
การใช้งาน Asyncio¶
ลูป CSI.snapshot() แบบบล็อกข้างต้นไม่ทำงานร่วมกับ event loop ของ asyncio ขณะที่ snapshot กำลังรอเฟรมถัดไป coroutine ทุกตัวในโปรแกรมจะหยุดทำงาน เพื่อให้ลูปการจับภาพอยู่ร่วมกับงานพร้อมกันอื่น ๆ (ไคลเอนต์ UART, ตัวตรวจสอบปุ่ม, งานเครือข่าย) ให้ห่อ CSI ด้วย adapter ขนาดเล็กที่แปลง snapshot ให้เป็น coroutine ที่ใช้ร่วมกับ await ได้โดยการ polling snapshot(blocking=False) และยอมให้ event loop ทำงานระหว่างการตรวจสอบ:
import asyncio
import csi
class AsyncCSI:
def __init__(self, *args, **kwargs):
self._csi = csi.CSI(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._csi, name)
async def snapshot(self):
while True:
img = self._csi.snapshot(blocking=False)
if img is not None:
return img
await asyncio.sleep_ms(0)
__getattr__ ส่งต่อแอตทริบิวต์อื่น ๆ ทุกตัว (reset, pixformat, framesize, ปุ่มควบคุมเซ็นเซอร์) ไปยัง CSI ที่อยู่เบื้องหลัง ดังนั้น wrapper จึงเป็นตัวแทนที่ใช้แทนกันได้ การเรียก non-blocking ครั้งแรกยังเริ่มต้นการจับภาพ DMA ของกล้องหากยังไม่ได้รันอยู่ ดังนั้นจึงไม่จำเป็นต้องมีการเตรียมการเพิ่มเติม
ลูปการจับภาพจะเหมาะกับโปรแกรม asyncio ขนาดใหญ่ในฐานะ coroutine อีกตัวหนึ่ง:
async def capture_loop(cam):
while True:
img = await cam.snapshot()
# process img here
async def main():
cam = AsyncCSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
asyncio.create_task(some_other_task())
await capture_loop(cam)
asyncio.run(main())
การตั้งค่า framebuffers ยังมีความสำคัญในรูปแบบนี้ โหมด single-buffer ทำให้ snapshot(blocking=False) คืนค่า None จนกว่าจะจับเฟรมถัดไปได้ ในขณะที่ double หรือ triple buffering จะช่วยให้ wrapper มักพบเฟรมที่บัฟเฟอร์ไว้รอในการ poll ครั้งแรก ดูบทสรุป AsyncCSI ในบทช่วยสอน asyncio สำหรับขั้นตอนการทำงานอย่างละเอียด
class CSI -- ส่วนต่อประสานเซ็นเซอร์กล้อง¶
คลาส CSI ใช้สำหรับควบคุมเซ็นเซอร์กล้อง
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
สร้างอ็อบเจกต์เพื่อสื่อสารกับเซ็นเซอร์กล้อง บนบอร์ดที่มีเซ็นเซอร์หลายตัว สามารถเลือกอ็อบเจกต์ CSI เฉพาะได้โดยส่ง
cidเช่นcsi.LEPTONเพื่อเลือกโมดูลเซ็นเซอร์ FLIR Lepton หากcidเป็น -1 เซ็นเซอร์หลักจะถูกเลือก (โดยทั่วไปคือโมดูลกล้องสีบนบอร์ดที่มีเซ็นเซอร์หลายตัว)หาก
delaysเป็นFalseการหน่วงเวลาสำหรับการตั้งตัวทั้งหมดในไดรเวอร์ csi จะถูกปิดใช้งาน ตามค่าเริ่มต้น ไดรเวอร์เซ็นเซอร์จะหน่วงเวลาหลังจากรีเซ็ต/เปลี่ยนโหมดเพื่อป้องกันไม่ให้CSI.snapshotคืนค่าเฟรมที่เสียหาย การปิดใช้งานการหน่วงเวลาช่วยให้คุณสามารถอัปเดตหลายรายการพร้อมกันและใช้การหน่วงเวลาเดียวตอนท้ายก่อนเรียกCSI.snapshotหาก
fflushเป็นFalseการล้างบัฟเฟอร์เฟรมอัตโนมัติที่กล่าวถึงในCSI.framebuffersจะถูกปิดใช้งาน ซึ่งจะลบขีดจำกัดเวลาสำหรับเฟรมใน frame buffer fifostreamเลือกว่า CSI นี้เป็นแหล่งสตรีมที่ส่งไปยัง IDE หรือไม่ ถ้าเป็นNone(ค่าเริ่มต้น) CSI จะกลายเป็นแหล่งสตรีมก็ต่อเมื่อเป็นเซ็นเซอร์หลัก (ไม่ใช่เซ็นเซอร์เสริม) ส่งTrueเพื่อบังคับให้ CSI นี้เป็นแหล่งสตรีม หรือค่า false ใด ๆ เพื่อปล่อยให้แหล่งสตรีมที่มีอยู่ไม่เปลี่ยนแปลงเมธอด¶
- reset(hard: bool = True) None¶
เริ่มต้นเซ็นเซอร์กล้อง ทำการรีเซ็ตฮาร์ดแวร์โดยสลับสัญญาณ RESET GPIO ไปยังโมดูลกล้องหาก
hardเป็นTrueควรตั้งhardเป็น false เมื่อรีเซ็ตเซ็นเซอร์กล้องเสริมที่ใช้ GPIO สัญญาณ RESET เดียวกับโมดูลหลัก
- shutdown(enable: bool) None¶
ใส่กล้องเข้าสู่โหมดพลังงานต่ำกว่า sleep (แต่กล้องต้องรีเซ็ตเมื่อตื่นขึ้น)
- flush() None¶
คัดลอกเนื้อหาบัฟเฟอร์เฟรมปัจจุบันไปยัง IDE preview เรียกใช้หลังจาก
CSI.snapshotล่าสุดหากสคริปต์สิ้นสุด เพื่อให้ IDE แสดงเฟรมล่าสุด
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
ถ่ายภาพโดยใช้กล้องและคืนค่าอ็อบเจกต์
image.Imageหาก
timeและ/หรือframesถูกส่งผ่าน snapshot จะบล็อกตามจำนวนtimeมิลลิวินาทีและ/หรือframesที่จับจากกล้อง สามารถใช้ทั้งสองอาร์กิวเมนต์พร้อมกันได้ หลังจากtimeและ/หรือframesหมด snapshot จะคืนค่าNoneblockingอาจเป็นFalseเพื่อเปิดใช้งานพฤติกรรม non-blocking ซึ่งจะทำให้ snapshot คืนค่าNoneเมื่อภาพถัดไปจากกล้องยังไม่พร้อม แทนที่จะรอimageอาจเป็นอ็อบเจกต์image.Imageอื่นเพื่ออัปเดตด้วยภาพใหม่ที่จับจากกล้อง แทนที่จะคืนค่าอ็อบเจกต์image.Imageใหม่ เนื้อหาของภาพก่อนหน้าจะถูกเขียนทับด้วยการคัดลอกเชิงลึกหาก
CSI.auto_rotationเปิดใช้งาน เมธอดนี้จะคืนค่าimage.Imageที่หมุนแล้ว
- cid() int¶
คืนค่า chip ID ของโมดูลกล้อง เปรียบเทียบกับ
csi.OV2640,csi.OV5640,csi.OV7670,csi.OV7690,csi.OV7725,csi.OV9650,csi.MT9V022,csi.MT9V024,csi.MT9V032,csi.MT9V034,csi.MT9M114,csi.BOSON320,csi.BOSON640,csi.LEPTON,csi.HM01B0,csi.HM0360,csi.GC2145,csi.GENX320ES,csi.GENX320,csi.PAG7920,csi.PAG7936,csi.PAJ6100,csi.FROGEYE2020หรือcsi.SOFTCSI
- readable() bool¶
คืนค่า
Trueหากมีภาพพร้อมที่จะคืนค่าโดยCSI.snapshotดังนั้นการเรียก snapshot จะไม่บล็อก
- pixformat(pixformat: int | None = None) int | None¶
ตั้งค่ารูปแบบพิกเซลสำหรับโมดูลกล้องเป็นหนึ่งใน
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422หรือcsi.JPEG(เฉพาะ OV2640/OV5640 เท่านั้น)คืนค่า pixformat ปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
ตั้งค่าขนาดเฟรมสำหรับโมดูลกล้องเป็นหนึ่งในค่าคงที่ขนาด (เช่น
csi.QVGA,csi.VGA,csi.HD, ฯลฯ --- ดูส่วนค่าคงที่)หรือคุณอาจส่งขนาดเฟรมกำหนดเองเป็น tuple
(w, h)เมื่อเรียกCSI.snapshotขนาดเฟรมกำหนดเองจะถูกประเมินตามกฎ DMA โดยทั่วไปขนาดเฟรมต้องเป็นจำนวนคูณของ 8 พิกเซลและ/หรือ 16 ไบต์คืนค่า framesize ปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- framerate(rate: int | None = None) int | None¶
ตั้งค่าอัตราเฟรมเป็น Hz สำหรับโมดูลกล้อง
คืนค่า framerate ปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
Note
CSI.framerateทำงานโดยการตัดเฟรมที่ได้รับจากโมดูลกล้องเพื่อรักษาอัตราเฟรมให้อยู่ที่หรือต่ำกว่าอัตราที่กำหนด ตามค่าเริ่มต้นกล้องจะทำงานที่อัตราเฟรมสูงสุด หากใช้งานได้สำหรับเซ็นเซอร์กล้องเฉพาะCSI.framerateยังจะลดอัตราเฟรมเซ็นเซอร์กล้องภายในเพื่อประหยัดพลังงานและปรับปรุงคุณภาพภาพโดยการเพิ่มการเปิดรับแสงของเซ็นเซอร์CSI.framerateอาจขัดแย้งกับCSI.auto_exposureบนกล้องบางรุ่น
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
ตั้งค่าความละเอียดของกล้องให้เป็นพื้นที่ย่อยของความละเอียดปัจจุบัน
roiคือ tuple(x, y, w, h)คุณอาจส่ง(w, h)ได้ด้วยแล้วหน้าต่างจะถูกจัดกึ่งกลางคืนค่า tuple
(x, y, w, h)ปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- gainceiling(gainceiling: int) bool¶
ตั้งค่า gainceiling ของภาพกล้องเป็นหนึ่งใน 2, 4, 8, 16, 32, 64 หรือ 128
คืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- brightness(brightness: int) bool¶
ตั้งค่าความสว่างของภาพกล้อง
คืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- contrast(contrast: int) bool¶
ตั้งค่าความคมชัดของภาพกล้อง
คืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- saturation(saturation: int) bool¶
ตั้งค่าความอิ่มตัวของสีภาพกล้อง
คืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- quality(quality: int) bool¶
ตั้งค่าคุณภาพการบีบอัด JPEG ของภาพกล้อง ช่วง 0 - 100
คืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลวNote
เฉพาะกล้อง OV2640/OV5640 เท่านั้น
- colorbar(enable: bool) bool¶
เปิด (
True) หรือปิด (False) โหมดแถบสี ค่าเริ่มต้นเป็นปิดคืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enableเปิดการควบคุมค่าเกนอัตโนมัติ (True) หรือปิด (False) กล้องเริ่มต้นด้วยการควบคุมค่าเกนอัตโนมัติเปิดอยู่หาก
enableเป็นFalseคุณอาจตั้งค่าเกนคงที่เป็นเดซิเบลด้วยgain_dbหาก
enableเป็นTrueคุณอาจตั้งค่าเพดานค่าเกนสูงสุดเป็นเดซิเบลด้วยgain_db_ceilingสำหรับอัลกอริทึมการควบคุมค่าเกนอัตโนมัติNote
คุณต้องปิดไวท์บาลานซ์ด้วยหากต้องการติดตามสี
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableเปิดการควบคุมการเปิดรับแสงอัตโนมัติ (True) หรือปิด (False) กล้องเริ่มต้นด้วยการควบคุมการเปิดรับแสงอัตโนมัติเปิดอยู่หาก
enableเป็นFalseคุณอาจตั้งค่าเวลาการเปิดรับแสงคงที่เป็นไมโครวินาทีด้วยexposure_usNote
อัลกอริทึมการเปิดรับแสงอัตโนมัติของกล้องค่อนข้างอนุรักษ์นิยมในการปรับค่าการเปิดรับแสงและโดยทั่วไปจะหลีกเลี่ยงการเปลี่ยนแปลงค่าการเปิดรับแสงมาก แต่จะเปลี่ยนค่าเกนมากเพื่อรับมือกับการเปลี่ยนแปลงของแสง
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enableเปิดไวท์บาลานซ์อัตโนมัติ (True) หรือปิด (False) กล้องเริ่มต้นด้วยไวท์บาลานซ์อัตโนมัติเปิดอยู่หาก
enableเป็นFalseคุณอาจตั้งค่าเกนคงที่เป็นเดซิเบลสำหรับช่องสัญญาณแดง เขียว และน้ำเงินตามลำดับด้วยrgb_gain_dbNote
คุณต้องปิดการควบคุมค่าเกนด้วยหากต้องการติดตามสี
- rgb_gain_db() Tuple[float, float, float]¶
คืนค่า tuple
(r, g, b)ของค่าเกนแดง เขียว และน้ำเงินปัจจุบันของกล้องเป็นเดซิเบล
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
ตั้งค่าการปรับแต่งระดับดำอัตโนมัติ (BLC) บนกล้อง
enableส่งTrueหรือFalseเพื่อเปิดหรือปิด BLC โดยปกติคุณจะต้องการเปิดใช้งานสิ่งนี้เสมอregsหากปิดใช้งานแล้วคุณสามารถตั้งค่ารีจิสเตอร์ BLC ด้วยตนเองจากการเรียกCSI.blc_regsก่อนหน้า
- blc_regs() List[int]¶
คืนค่ารีจิสเตอร์ BLC ของเซ็นเซอร์เป็นรายการจำนวนเต็ม สำหรับใช้กับ
CSI.auto_blc
- hmirror(enable: bool | None = None) bool | None¶
เปิด (
True) หรือปิด (False) โหมดกระจกแนวนอน ค่าเริ่มต้นเป็นปิดคืนค่าการตั้งค่าปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- vflip(enable: bool | None = None) bool | None¶
เปิด (
True) หรือปิด (False) โหมดพลิกแนวตั้ง ค่าเริ่มต้นเป็นปิดคืนค่าการตั้งค่าปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- transpose(enable: bool | None = None) bool | None¶
เปิด (
True) หรือปิด (False) โหมด transpose ค่าเริ่มต้นเป็นปิดvflip=False, hmirror=False, transpose=False -> หมุน 0 องศา
vflip=True, hmirror=False, transpose=True -> หมุน 90 องศา
vflip=True, hmirror=True, transpose=False -> หมุน 180 องศา
vflip=False, hmirror=True, transpose=True -> หมุน 270 องศา
คืนค่าการตั้งค่าปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- auto_rotation(enable: bool | None = None) bool | None¶
เปิด (
True) หรือปิด (False) โหมดหมุนอัตโนมัติ ค่าเริ่มต้นเป็นปิดคืนค่าการตั้งค่าปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
Note
เมธอดนี้ใช้งานได้เฉพาะเมื่อ OpenMV Cam มีการติดตั้ง
imuและเปิดใช้งานโดยอัตโนมัติ
- framebuffers(count: int | None = None) int | None¶
ตั้งค่าจำนวนบัฟเฟอร์เฟรมที่ใช้รับข้อมูลภาพ ตามค่าเริ่มต้น OpenMV Cam จะพยายามจัดสรรบัฟเฟอร์เฟรมให้มากที่สุดเท่าที่จะทำได้ การจัดสรรใหม่จะเกิดขึ้นทุกครั้งที่เรียก
CSI.pixformat,CSI.framesizeหรือCSI.windowcountที่เป็น 1 (single buffer), 2 (double buffer) หรือ 3 (triple buffer) จะเลือกโหมดการจับภาพที่สอดคล้องกัน ส่ง 4 หรือมากกว่าเพื่อใส่ไดรเวอร์ในโหมด video FIFO ที่มีcountบัฟเฟอร์ต่อคิว ซึ่งมีประโยชน์สำหรับการบันทึกวิดีโอลง SD card เมื่อเฟรมหาย บัฟเฟอร์เฟรมทั้งหมดยกเว้นที่กำลังใช้งานอยู่จะถูกล้าง ดังนั้นCSI.snapshotจะคืนค่าเฟรมล่าสุดเสมอคืนค่า count ปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
- special_effect(effect: int) bool¶
ตั้งค่าเอฟเฟกต์ดิจิทัลพิเศษ (หนึ่งใน
csi.NORMALหรือcsi.NEGATIVE)คืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrueเพื่อเปิดใช้งานFalseเพื่อปิดใช้งานradiคือรัศมีจำนวนเต็มของพิกเซลที่จะแก้ไขcoefคือกำลังของการแก้ไขคืนค่า
Trueเมื่อสำเร็จและFalseเมื่อล้มเหลว
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
ลงทะเบียน callback
cbเพื่อรัน (ในบริบทของอินเทอร์รัปต์) ทุกครั้งที่โมดูลกล้องสร้างเฟรมใหม่ (แต่ก่อนที่เฟรมจะถูกรับ)cbรับอาร์กิวเมนต์หนึ่งตัวและถูกส่งสถานะปัจจุบันของพิน vsync หลังจากเปลี่ยนแปลงคืนค่า callback ที่ลงทะเบียนหากเรียกโดยไม่มีอาร์กิวเมนต์ ส่งค่าที่เรียกไม่ได้ใด ๆ เพื่อล้าง callback
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
ลงทะเบียน callback
cbเพื่อรัน (ในบริบทของอินเทอร์รัปต์) ทุกครั้งที่โมดูลกล้องสร้างเฟรมใหม่และเฟรมพร้อมที่จะอ่านผ่านCSI.snapshotcbไม่รับอาร์กิวเมนต์ ใช้สิ่งนี้เพื่อกำหนดเวลาการอ่านเฟรมในภายหลังด้วยmicropython.schedule()คืนค่า callback ที่ลงทะเบียนหากเรียกโดยไม่มีอาร์กิวเมนต์ ส่งค่าที่เรียกไม่ได้ใด ๆ เพื่อล้าง callback
- ioctl(request: int, *args) Any¶
รัน request เฉพาะเซ็นเซอร์
requestคือหนึ่งในค่าคงที่IOCTL_*อาร์กิวเมนต์ตำแหน่งที่เหลือและค่าที่คืนขึ้นอยู่กับ request requests ที่รองรับถูกจัดกลุ่มตามตระกูลเซ็นเซอร์ด้านล่างทั่วไป (เซ็นเซอร์ใดก็ได้):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))ตั้งค่าหน้าต่างการอ่านของเซ็นเซอร์ หน้าต่างที่เล็กกว่าจะเพิ่มอัตราเฟรมโดยแลกกับมุมมองภาพ
ioctl(IOCTL_GET_READOUT_WINDOW)คืนค่าหน้าต่างการอ่านปัจจุบันเป็น tuple
(x, y, w, h)ioctl(IOCTL_SET_TRIGGERED_MODE, enable)เปิด (
True) หรือปิด (False) triggered mode บน MT9V034ioctl(IOCTL_GET_TRIGGERED_MODE)คืนค่าสถานะ triggered mode ปัจจุบันเป็น
boolioctl(IOCTL_SET_FOV_WIDE, enable)เมื่อเป็น
Trueสั่งให้framesize()เพิ่มประสิทธิภาพสำหรับมุมมองภาพแทนอัตราเฟรมioctl(IOCTL_GET_FOV_WIDE)คืนค่าสถานะ FOV-wide ปัจจุบันเป็น
boolioctl(IOCTL_SET_NIGHT_MODE, enable)เปิด (
True) หรือปิด (False) "night mode" แสงน้อยของเซ็นเซอร์ เฉพาะ OV7725 และ OV5640 เท่านั้นioctl(IOCTL_GET_NIGHT_MODE)คืนค่าสถานะ night mode ปัจจุบันเป็น
boolioctl(IOCTL_GET_RGB_STATS)คืนค่า 4-tuple ของสถิติช่องสัญญาณ RGB ดิบ
(r, gb, gr, b)ที่อ่านจากเซ็นเซอร์ (โดยทั่วไปใช้สำหรับการปรับแต่งไวท์บาลานซ์)
OV5640 FPC -- โฟกัสอัตโนมัติ:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)เริ่มการสแกนโฟกัสอัตโนมัติบนโมดูล OV5640 FPC
ioctl(IOCTL_PAUSE_AUTO_FOCUS)หยุดการสแกนโฟกัสอัตโนมัติที่กำลังดำเนินอยู่ชั่วคราว
ioctl(IOCTL_RESET_AUTO_FOCUS)รีเซ็ตตำแหน่งโฟกัสอัตโนมัติกลับเป็นค่าเริ่มต้น
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)บล็อกจนกว่าการสแกนโฟกัสอัตโนมัติปัจจุบันจะเสร็จสิ้น
timeout_msค่าเริ่มต้นเป็น 5000 หากไม่ระบุ
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)คืนค่าความกว้างของภาพ Lepton เป็นพิกเซล
ioctl(IOCTL_LEPTON_GET_HEIGHT)คืนค่าความสูงของภาพ Lepton เป็นพิกเซล
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)คืนค่าประเภทของ Lepton (เป็น radiometric หรือไม่) เป็น int
ioctl(IOCTL_LEPTON_GET_REFRESH)คืนค่าอัตราการรีเฟรชของ Lepton เป็น Hz
ioctl(IOCTL_LEPTON_GET_RESOLUTION)คืนค่าความละเอียด ADC ของ Lepton เป็นบิต
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)รัน command จาก FLIR Lepton SDK
cmdคือ command id 16 บิตที่กำหนดโดย SDKioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)เขียน attribute ของ Lepton SDK
attr_idคือ attribute id 16 บิตpayloadคือbytes/bytearrayที่ความยาวต้องเป็นจำนวนคูณของ 16 บิตioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)อ่าน attribute ของ Lepton SDK
attr_idคือ attribute id 16 บิตwordsคือจำนวน word 16 บิตที่จะอ่าน คืนค่าเป็นbytearrayioctl(IOCTL_LEPTON_GET_FPA_TEMP)คืนค่าอุณหภูมิ focal-plane-array ของ Lepton เป็นองศาเซลเซียส
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)คืนค่าอุณหภูมิเสริมของ Lepton เป็นองศาเซลเซียส
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)สลับ Lepton ระหว่าง AGC และการส่งออกอุณหภูมิโดยตรง
measurement_enabled=Trueเปิดใช้งานการส่งออกอุณหภูมิโดยตรง แฟล็กhigh_temp_enabledแบบเลือกได้จะเลือกช่วงอุณหภูมิสูงioctl(IOCTL_LEPTON_GET_MODE)คืนค่า 2-tuple
(measurement_enabled, high_temp_enabled)ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))ตั้งค่าช่วงอุณหภูมิที่แมปกับ
0..255เมื่อเปิดใช้งานโหมดการวัดioctl(IOCTL_LEPTON_GET_RANGE)คืนค่าช่วง
(min_celsius, max_celsius)ปัจจุบัน
Himax HM01B0 -- การตรวจจับการเคลื่อนไหว:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)เปิด (
True) หรือปิด (False) บล็อกการตรวจจับการเคลื่อนไหวบนเซ็นเซอร์ของ HM01B0ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))ตั้งค่าหน้าต่างการตรวจจับการเคลื่อนไหวบน HM01B0
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)ตั้งค่าขีดแบ่งการตรวจจับการเคลื่อนไหว (
0--255)ioctl(IOCTL_HIMAX_MD_CLEAR)ล้างตัวล็อกอินเทอร์รัปต์การตรวจจับการเคลื่อนไหว
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)เปิด (
True) หรือปิด (False) oscillator ภายในของ HM01B0
Prophesee GENX320 -- เซ็นเซอร์เหตุการณ์:
ioctl(IOCTL_GENX320_SET_BIASES, preset)ใช้ bias preset
presetคือหนึ่งในค่าคงที่GENX320_BIASES_*ioctl(IOCTL_GENX320_SET_BIAS, bias, value)ตั้งค่า bias เดียว
biasคือหนึ่งในค่าคงที่GENX320_BIAS_*valueคือค่าการตั้งเป็นจำนวนเต็มioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)กำหนดค่าตัวกรอง anti-flicker
enableคือ bool อาร์กิวเมนต์ความถี่แบบเลือกได้จะตั้งค่า passband ของตัวกรองioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])กำหนดค่าตัวกรอง spatio-temporal contrast
modeคือหนึ่งในค่าคงที่GENX320_STC_*อาร์กิวเมนต์เพิ่มเติมได้สูงสุดสองตัวขึ้นอยู่กับโหมดioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)สลับเซ็นเซอร์ระหว่างโหมดเฟรมและโหมดเหตุการณ์
modeคือหนึ่งในค่าคงที่GENX320_MODE_*สำหรับโหมดเหตุการณ์evt_resคือความยาวแกนแถวของบัฟเฟอร์เหตุการณ์ที่ส่งไปยังIOCTL_GENX320_READ_EVENTSioctl(IOCTL_GENX320_READ_EVENTS, buf)อ่านเหตุการณ์ลงใน
bufซึ่งเป็นndarrayแบบuint16รูปร่าง(EVT_res, 6)โดยที่EVT_resคือกำลังสองระหว่าง 1024 ถึง 65536 คอลัมน์ประกอบด้วย:[0]-- ประเภทเหตุการณ์ (PIX_OFF_EVENT/PIX_ON_EVENT/ trigger)[1]-- วินาที[2]-- มิลลิวินาที[3]-- ไมโครวินาที[4]-- พิกัดx[5]-- พิกัดy
คืนค่าจำนวนเหตุการณ์ที่เขียน
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)คืนค่า
image.Imageที่ประกอบด้วยเฟรมเหตุการณ์ดิบจาก GENX320ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)ปิดพิกเซลที่มีสัญญาณรบกวนมากกว่า
sigmaส่วนเบี่ยงเบนมาตรฐานจากการแจกแจงปกติiterationsคือจำนวนเต็มของรอบการปรับแต่ง คืนค่าจำนวนพิกเซลที่ถูกปิดใช้งาน
- color_palette(palette: int | None = None) int | None¶
ตั้งค่า color palette ที่ใช้สำหรับสิ่งต่าง ๆ เช่น การแปลงระดับสีเทาของ FLIR Lepton เป็น RGB565 หรือการแสดงภาพเหตุการณ์ GENX320 เป็นหนึ่งใน
image.PALETTE_RAINBOW,image.PALETTE_IRONBOWและ (เมื่อรองรับ)image.PALETTE_DEPTH,image.PALETTE_EVT_DARKหรือimage.PALETTE_EVT_LIGHTคืนค่าการตั้งค่าปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์
ฟังก์ชัน¶
ค่าคงที่¶
- csi.BINARY: int¶
รูปแบบพิกเซล BINARY (bitmap) แต่ละพิกเซลมีขนาด 1 บิต มีประโยชน์สำหรับการจัดเก็บ mask สามารถใช้กับ
image.Image()
- csi.YUV422: int¶
รูปแบบพิกเซล YUV422 แต่ละพิกเซลถูกจัดเก็บเป็นค่า Y 8 บิตระดับสีเทาตามด้วยค่าสี U/V 8 บิตสลับกันที่ใช้ร่วมกันระหว่างค่า Y สองค่า (Y1, U, Y2, V, ...) มีเพียงบางเมธอดการประมวลผลภาพเท่านั้นที่ทำงานกับ YUV422
- csi.JPEG: int¶
โหมด JPEG โมดูลกล้องส่งออกภาพ JPEG ที่บีบอัดแล้ว ใช้
CSI.qualityเพื่อควบคุมคุณภาพ JPEG ใช้งานได้เฉพาะกับกล้อง OV2640/OV5640 เท่านั้น
- csi.NORMAL: int¶
โหมดปกติสำหรับ
CSI.special_effect
- csi.NEGATIVE: int¶
โหมด Negative สำหรับ
CSI.special_effect
- csi.SXGA: int¶
ความละเอียด 1280x1024 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV2640/OV5640 เท่านั้น
- csi.UXGA: int¶
ความละเอียด 1600x1200 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV2640/OV5640 เท่านั้น
- csi.IOCTL_SET_FOV_WIDE: int¶
เปิดใช้งาน
CSI.framesizeเพื่อเพิ่มประสิทธิภาพสำหรับมุมมองภาพมากกว่า FPS ดูCSI.ioctl
- csi.IOCTL_GET_FOV_WIDE: int¶
คืนค่าว่า
CSI.framesizeกำลังเพิ่มประสิทธิภาพสำหรับมุมมองภาพมากกว่า FPS หรือไม่ ดูCSI.ioctl
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
หยุดโฟกัสอัตโนมัติชั่วคราว (ขณะรัน) สำหรับโมดูลกล้อง OV5640 FPC ดู
CSI.ioctl
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
รีเซ็ตโฟกัสอัตโนมัติกลับเป็นค่าเริ่มต้นสำหรับโมดูลกล้อง OV5640 FPC ดู
CSI.ioctl
- csi.IOCTL_SET_NIGHT_MODE: int¶
เปิดหรือปิด night mode ลดอัตราเฟรมเพื่อเพิ่มการเปิดรับแสงแบบไดนามิก ดู
CSI.ioctl
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
คืนค่าประเภทของ FLIR Lepton (เป็น radiometric หรือไม่) ดู
CSI.ioctl
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
ตั้งค่า attribute ของ FLIR Lepton จาก FLIR Lepton SDK ดู
CSI.ioctl
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
ดึงค่า attribute ของ FLIR Lepton จาก FLIR Lepton SDK ดู
CSI.ioctl
- csi.IOCTL_LEPTON_SET_MODE: int¶
ตั้งค่าไดรเวอร์ FLIR Lepton เป็นโหมดที่แต่ละพิกเซลเป็นค่าอุณหภูมิ ดู
CSI.ioctl
- csi.IOCTL_LEPTON_GET_MODE: int¶
คืนค่าว่า measurement mode เปิดใช้งานสำหรับเซ็นเซอร์ FLIR Lepton หรือไม่ ดู
CSI.ioctl
- csi.IOCTL_LEPTON_SET_RANGE: int¶
ตั้งค่าช่วงอุณหภูมิที่แมปกับค่าพิกเซลใน measurement mode ดู
CSI.ioctl
- csi.IOCTL_GENX320_SET_BIASES: int¶
ตั้งค่า bias ของเซ็นเซอร์ GENX320 เป็นหนึ่งใน preset
GENX320_BIASES_*ดูCSI.ioctlหลังจากCSI.resetไดรเวอร์จะใช้csi.GENX320_BIASES_LOW_NOISEไม่ใช่csi.GENX320_BIASES_DEFAULTใช้ ioctl นี้เพื่อเปลี่ยนไปใช้ preset อื่นเมื่อแอปพลิเคชันต้องการความไวหรือแบนด์วิดท์มากขึ้น
- csi.GENX320_BIASES_DEFAULT: int¶
ค่าเริ่มต้นของ datasheet GenX320 --- ความไว สัญญาณรบกวน และแบนด์วิดท์สมดุลสำหรับฉากทั่วไป
- csi.GENX320_BIASES_LOW_LIGHT: int¶
ปรับแต่งสำหรับสภาพแสงน้อย --- ค่าขีดแบ่ง contrast ทั้งสองคลายตัวสำหรับความไวสูงขึ้น FO ลดต่ำลง HPF ปิดใช้งานเพื่อให้การเปลี่ยนแปลงความสว่างช้าๆ ยังคงลงทะเบียนได้
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
ปรับแต่งสำหรับการติดตาม LED ที่กะพริบคอนทราสต์สูง (active markers) --- ค่าขีดแบ่ง contrast สูงขึ้นเพื่อให้เฉพาะการเปลี่ยนแปลงที่คมชัดเท่านั้นที่จะทริกเกอร์ FO และ HPF ปรับสูงสุดเพื่อเพิ่มแบนด์วิดท์และปฏิเสธการเปลี่ยนแปลงแวดล้อมช้าๆ REFR=0 เพื่อจับทุก blink edge
- csi.GENX320_BIASES_LOW_NOISE: int¶
ค่าเริ่มต้นของไดรเวอร์ --- ความไวต่ำกว่า
DEFAULT(ค่าขีดแบ่ง contrast สูงขึ้น) และ FO ต่ำกว่าสำหรับกิจกรรมสัญญาณรบกวนพื้นหลังน้อยลง ดีที่สุดสำหรับฉากนิ่งหรือช้าที่เหตุการณ์เท็จจะมีอิทธิพล
- csi.GENX320_BIASES_HIGH_SPEED: int¶
ปรับแต่งสำหรับฉากที่มีการเคลื่อนไหวเร็ว --- FO สูงขึ้นสำหรับแบนด์วิดท์พิกเซลที่กว้างขึ้น HPF สูงขึ้นเพื่อปฏิเสธการเปลี่ยนแปลงช้าๆ REFR สูงขึ้นสำหรับ dead time ที่ยาวนานขึ้นหลังจากแต่ละเหตุการณ์เพื่อไม่ให้การอ่านค่าอิ่มตัว
- csi.IOCTL_GENX320_SET_BIAS: int¶
ตั้งค่า bias เดียวของเซ็นเซอร์ GENX320 เป็นค่า DAC ส่งค่าคงที่
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFหรือcsi.GENX320_BIAS_REFR) และค่า DAC เป็นจำนวนเต็ม แต่ละ bias เป็นอิสระ --- เรียก ioctl นี้ซ้ำๆ เพื่อปรับแต่งเฉพาะ bias ที่คุณต้องการหลังจากใช้ preset ดูCSI.ioctl
- csi.GENX320_BIAS_DIFF_OFF: int¶
ค่าขีดแบ่ง contrast ของ comparator เชิงลบ --- ควบคุมว่าพิกเซลต้องมืดลงเท่าใดก่อนที่
csi.PIX_OFF_EVENTจะเกิด ค่าต่ำกว่า = ไวกว่า (เหตุการณ์มากขึ้น)
- csi.GENX320_BIAS_DIFF_ON: int¶
ค่าขีดแบ่ง contrast ของ comparator เชิงบวก --- ควบคุมว่าพิกเซลต้องสว่างขึ้นเท่าใดก่อนที่
csi.PIX_ON_EVENTจะเกิด ค่าต่ำกว่า = ไวกว่า (เหตุการณ์มากขึ้น)
- csi.GENX320_BIAS_FO: int¶
ความถี่ตัดต่ำผ่านของพิกเซล --- แลกระหว่างแบนด์วิดท์พิกเซล (ความเร็ว/ความหน่วง) กับกิจกรรมสัญญาณรบกวนพื้นหลัง ค่าสูงกว่า = การตอบสนองพิกเซลเร็วขึ้น สัญญาณรบกวนมากขึ้น
- csi.GENX320_BIAS_HPF: int¶
ความถี่ตัดสูงผ่านของพิกเซล --- ปฏิเสธการเปลี่ยนแปลงความสว่างช้าๆ ค่าสูงกว่า = การเปลี่ยนแปลงช้าๆ ถูกกรองออก (เฉพาะการเปลี่ยนแปลงเร็วที่จะลงทะเบียน)
- csi.GENX320_BIAS_REFR: int¶
ช่วงเวลา refractory ของพิกเซล --- dead time หลังจากพิกเซลส่งเหตุการณ์ซึ่งพิกเซลไม่สามารถเกิดเหตุการณ์ได้อีก ค่าสูงกว่า = dead time นานขึ้น เหตุการณ์น้อยลงจากพิกเซลที่มีกิจกรรมมาก
- csi.IOCTL_GENX320_SET_AFK: int¶
ตั้งค่าตัวกรอง anti-flicker (AFK) ของ GENX320 ซึ่งปฏิเสธเหตุการณ์จากพิกเซลที่สลับที่ความถี่แถบคาบ (ไฟนีออน, จอแสดงผลที่ขับด้วย LED ฯลฯ) ส่ง
enable(1 เพื่อเปิดใช้งาน 0 เพื่อปิดใช้งาน) และเมื่อเปิดใช้งาน ขอบแถบเป็นเฮิรตซ์:(enable, freq_low_hz, freq_high_hz)ดูCSI.ioctl
- csi.IOCTL_GENX320_SET_STC: int¶
ตั้งค่าโหมดตัวกรอง spatio-temporal contrast (STC) ของ GENX320 ส่งค่าคงที่
GENX320_STC_*(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) ตามด้วยค่าขีดแบ่งที่โหมดต้องการ (เป็นมิลลิวินาที) ดูCSI.ioctl
- csi.GENX320_STC_ONLY: int¶
เก็บเหตุการณ์ที่สองของ burst; ทิ้งเหตุการณ์แรกและเหตุการณ์ที่ตามมา รับพารามิเตอร์หนึ่งตัว คือ
stc_thresholdเป็นมิลลิวินาที --- เหตุการณ์ที่อยู่ภายในหน้าต่างนั้นของเหตุการณ์ก่อนหน้าบนพิกเซลเดียวกันถือว่าเป็นส่วนหนึ่งของ burst เดียวกัน
- csi.GENX320_STC_TRAIL_ONLY: int¶
เก็บเหตุการณ์แรกของ burst; ทิ้งเหตุการณ์ที่ตามมาบนพิกเซลเดียวกันจนกว่า
trail_thresholdจะผ่านไป รับพารามิเตอร์หนึ่งตัว คือtrail_thresholdเป็นมิลลิวินาที
- csi.GENX320_STC_TRAIL: int¶
เก็บเหตุการณ์แรกของ burst บวกขอบที่ตามมา --- รวม
csi.GENX320_STC_ONLYและcsi.GENX320_STC_TRAIL_ONLYรับสองพารามิเตอร์ คือstc_thresholdและtrail_threshold(ทั้งคู่เป็น ms) เซ็นเซอร์กำหนดให้ทั้งสองอยู่ในอัตราส่วนประมาณ 13:1
- csi.IOCTL_GENX320_SET_MODE: int¶
ตั้งค่าโหมดการทำงานของ GENX320 ส่ง
csi.GENX320_MODE_HISTOสำหรับฮิสโทแกรมเหตุการณ์บนชิป (cam ทำงานเหมือนกล้องระดับสีเทาปกติที่ framerate ที่กำหนด) หรือcsi.GENX320_MODE_EVENTตามด้วยความยาวแกนแถวของndarrayเหตุการณ์ (กำลังสองระหว่าง 1024 ถึง 65536) สำหรับการ streaming เหตุการณ์ดิบ ดูCSI.ioctl
- csi.GENX320_MODE_HISTO: int¶
โหมดฮิสโทแกรม --- เหตุการณ์ถูกสะสมบนชิปลงใน bin ต่อพิกเซลและรายงานเป็นเฟรมระดับสีเทา 320x320 ที่อัตราที่กำหนด (~20-350 FPS) cam ดูเหมือนกล้องปกติ ดังนั้นกิจวัตรการประมวลผลภาพมาตรฐานทั้งหมดทำงานได้โดยตรง
- csi.GENX320_MODE_EVENT: int¶
โหมดเหตุการณ์ --- ข้ามฮิสโทแกรมบนชิปและ stream เหตุการณ์ดิบลงใน
ndarrayแบบ numpy ที่มี timestamp ไมโครวินาที สำหรับแอปพลิเคชันที่ต้องการรายละเอียดเวลาเต็มแทนที่จะเป็นเฟรมที่ pre-bin แล้ว
- csi.IOCTL_GENX320_READ_EVENTS: int¶
อ่านเหตุการณ์ดิบลงใน
ndarrayแบบ uint16 รูปร่าง(EVT_res, 6)(โดยที่EVT_resตรงกับขนาดบัฟเฟอร์ที่ส่งไปยังcsi.IOCTL_GENX320_SET_MODE) คอลัมน์ประกอบด้วย[0]ประเภทเหตุการณ์ (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]timestamp วินาที,[2]มิลลิวินาที,[3]ไมโครวินาที,[4]พิกัด X (0-319),[5]พิกัด Y (0-319) คืนค่าจำนวนเหตุการณ์ที่เขียนลงในบัฟเฟอร์ โดยปล่อยแถวเก่าที่เกินจำนวนนั้นไม่เปลี่ยนแปลง ดูCSI.ioctl
- csi.IOCTL_GENX320_CALIBRATE: int¶
ปิดใช้งานพิกเซลร้อนอัตโนมัติ --- พิกเซลที่เกิดเหตุการณ์ผิดพลาดแม้แต่บนฉากนิ่ง ไดรเวอร์จะสร้างจำนวน hit ต่อพิกเซล 320x320 คำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน และปิดใช้งานพิกเซลที่จำนวนเกิน
mean + sigma * stddevส่ง event-count budget (จำนวนเหตุการณ์ที่จะนับก่อนคำนวณสถิติ --- สูงกว่า = ประมาณการน่าเชื่อถือกว่า ช้ากว่า; ~10000 เป็นค่าเริ่มต้นที่ดี) และ sigma float (ต่ำกว่า = เข้มข้นกว่า, ค่าเริ่มต้น ~0.5) คืนค่าจำนวนพิกเซลที่ถูกปิดใช้งาน ชี้กล้องไปที่ฉากนิ่งก่อนเพื่อไม่ให้เหตุการณ์ที่ขับเคลื่อนด้วยการเคลื่อนไหวถูกนับกับพิกเซลที่ไม่มีปัญหา ดูCSI.ioctl
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
คืนค่าเฟรมเหตุการณ์ดิบ
image.Imageจาก GENX320 โดยมีเหตุการณ์ยังอยู่ในการ encoding แบบ packed ดั้งเดิมของชิป มีประโยชน์หากต้องการส่ง stream ดิบไปยัง PC เพื่อถอดรหัสแบบออฟไลน์แทนที่จะประมวลผลบน cam ดูCSI.ioctl
- csi.PIX_OFF_EVENT: int¶
ประเภทเหตุการณ์ GENX320 (คอลัมน์
[0]) --- พิกเซลตรวจพบการลดลงของความสว่าง (ค่าขีดแบ่ง contrast เชิงลบถูกข้าม) คอลัมน์[4]/[5]บรรจุ X/Y ของพิกเซล
- csi.PIX_ON_EVENT: int¶
ประเภทเหตุการณ์ GENX320 (คอลัมน์
[0]) --- พิกเซลตรวจพบการเพิ่มขึ้นของความสว่าง (ค่าขีดแบ่ง contrast เชิงบวกถูกข้าม) คอลัมน์[4]/[5]บรรจุ X/Y ของพิกเซล
- csi.RST_TRIGGER_RISING: int¶
ประเภทเหตุการณ์ GENX320 (คอลัมน์
[0]) --- trigger รีเซ็ตพิกเซล ขอบขาขึ้น X/Y ไม่ใช้งาน ไม่ถูกสร้างโดย เฟิร์มแวร์ในขณะนี้
- csi.RST_TRIGGER_FALLING: int¶
ประเภทเหตุการณ์ GENX320 (คอลัมน์
[0]) --- trigger รีเซ็ตพิกเซล ขอบขาลง X/Y ไม่ใช้งาน ไม่ถูกสร้างโดย เฟิร์มแวร์ในขณะนี้