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 fifo

stream เลือกว่า 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 (แต่กล้องต้องรีเซ็ตเมื่อตื่นขึ้น)

sleep(enable: bool) None

ทำให้กล้องเข้าสู่ sleep หาก enable เป็น True มิฉะนั้นจะปลุกกล้องขึ้น

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 จะคืนค่า None

blocking อาจเป็น False เพื่อเปิดใช้งานพฤติกรรม non-blocking ซึ่งจะทำให้ snapshot คืนค่า None เมื่อภาพถัดไปจากกล้องยังไม่พร้อม แทนที่จะรอ

image อาจเป็นอ็อบเจกต์ image.Image อื่นเพื่ออัปเดตด้วยภาพใหม่ที่จับจากกล้อง แทนที่จะคืนค่าอ็อบเจกต์ image.Image ใหม่ เนื้อหาของภาพก่อนหน้าจะถูกเขียนทับด้วยการคัดลอกเชิงลึก

หาก CSI.auto_rotation เปิดใช้งาน เมธอดนี้จะคืนค่า image.Image ที่หมุนแล้ว

width() int

คืนค่าความกว้างของความละเอียดเซ็นเซอร์

height() int

คืนค่าความสูงของความละเอียดเซ็นเซอร์

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

คุณต้องปิดไวท์บาลานซ์ด้วยหากต้องการติดตามสี

gain_db() float

คืนค่าค่าเกนกล้องปัจจุบันเป็นเดซิเบล

auto_exposure(enable: bool, exposure_us: int = -1) None

enable เปิดการควบคุมการเปิดรับแสงอัตโนมัติ (True) หรือปิด (False) กล้องเริ่มต้นด้วยการควบคุมการเปิดรับแสงอัตโนมัติเปิดอยู่

หาก enable เป็น False คุณอาจตั้งค่าเวลาการเปิดรับแสงคงที่เป็นไมโครวินาทีด้วย exposure_us

Note

อัลกอริทึมการเปิดรับแสงอัตโนมัติของกล้องค่อนข้างอนุรักษ์นิยมในการปรับค่าการเปิดรับแสงและโดยทั่วไปจะหลีกเลี่ยงการเปลี่ยนแปลงค่าการเปิดรับแสงมาก แต่จะเปลี่ยนค่าเกนมากเพื่อรับมือกับการเปลี่ยนแปลงของแสง

exposure_us() int

คืนค่าการเปิดรับแสงกล้องปัจจุบันเป็นไมโครวินาที

auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None

enable เปิดไวท์บาลานซ์อัตโนมัติ (True) หรือปิด (False) กล้องเริ่มต้นด้วยไวท์บาลานซ์อัตโนมัติเปิดอยู่

หาก enable เป็น False คุณอาจตั้งค่าเกนคงที่เป็นเดซิเบลสำหรับช่องสัญญาณแดง เขียว และน้ำเงินตามลำดับด้วย rgb_gain_db

Note

คุณต้องปิดการควบคุมค่าเกนด้วยหากต้องการติดตามสี

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.window

count ที่เป็น 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

enable True เพื่อเปิดใช้งาน 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.snapshot

cb ไม่รับอาร์กิวเมนต์ ใช้สิ่งนี้เพื่อกำหนดเวลาการอ่านเฟรมในภายหลังด้วย 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 บน MT9V034

ioctl(IOCTL_GET_TRIGGERED_MODE)

คืนค่าสถานะ triggered mode ปัจจุบันเป็น bool

ioctl(IOCTL_SET_FOV_WIDE, enable)

เมื่อเป็น True สั่งให้ framesize() เพิ่มประสิทธิภาพสำหรับมุมมองภาพแทนอัตราเฟรม

ioctl(IOCTL_GET_FOV_WIDE)

คืนค่าสถานะ FOV-wide ปัจจุบันเป็น bool

ioctl(IOCTL_SET_NIGHT_MODE, enable)

เปิด (True) หรือปิด (False) "night mode" แสงน้อยของเซ็นเซอร์ เฉพาะ OV7725 และ OV5640 เท่านั้น

ioctl(IOCTL_GET_NIGHT_MODE)

คืนค่าสถานะ night mode ปัจจุบันเป็น bool

ioctl(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 บิตที่กำหนดโดย SDK

ioctl(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 บิตที่จะอ่าน คืนค่าเป็น bytearray

ioctl(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) บล็อกการตรวจจับการเคลื่อนไหวบนเซ็นเซอร์ของ HM01B0

ioctl(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_EVENTS

ioctl(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 ที่ประกอบด้วยเฟรมเหตุการณ์ดิบจาก GENX320

ioctl(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

คืนค่าการตั้งค่าปัจจุบันหากเรียกโดยไม่มีอาร์กิวเมนต์

__write_reg(address: int, value: int) None

เขียน value ไปยังรีจิสเตอร์กล้องที่ address

Note

ดูเอกสารข้อมูลกล้องสำหรับข้อมูลรีจิสเตอร์

__read_reg(address: int) int

อ่านรีจิสเตอร์กล้องที่ address

Note

ดูเอกสารข้อมูลกล้องสำหรับข้อมูลรีจิสเตอร์

ฟังก์ชัน

csi.devices() List[int]

คืนค่ารายการ chip ID ของเซ็นเซอร์ที่ตรวจพบ

ค่าคงที่

csi.BINARY: int

รูปแบบพิกเซล BINARY (bitmap) แต่ละพิกเซลมีขนาด 1 บิต มีประโยชน์สำหรับการจัดเก็บ mask สามารถใช้กับ image.Image()

csi.GRAYSCALE: int

รูปแบบพิกเซล GRAYSCALE (Y จาก YUV422) แต่ละพิกเซลมีขนาด 8 บิต

csi.RGB565: int

รูปแบบพิกเซล RGB565 แต่ละพิกเซลมีขนาด 16 บิต (5 บิตแดง 6 บิตเขียว 5 บิตน้ำเงิน)

csi.BAYER: int

รูปแบบพิกเซลภาพ RAW BAYER

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.OV2640: int

CSI.cid คืนค่านี้สำหรับกล้อง OV2640

csi.OV5640: int

CSI.cid คืนค่านี้สำหรับกล้อง OV5640

csi.OV7670: int

CSI.cid คืนค่านี้สำหรับกล้อง OV7670

csi.OV7690: int

CSI.cid คืนค่านี้สำหรับกล้อง OV7690

csi.OV7725: int

CSI.cid คืนค่านี้สำหรับกล้อง OV7725

csi.OV9650: int

CSI.cid คืนค่านี้สำหรับกล้อง OV9650

csi.MT9V022: int

CSI.cid คืนค่านี้สำหรับกล้อง MT9V022

csi.MT9V024: int

CSI.cid คืนค่านี้สำหรับกล้อง MT9V024

csi.MT9V032: int

CSI.cid คืนค่านี้สำหรับกล้อง MT9V032

csi.MT9V034: int

CSI.cid คืนค่านี้สำหรับกล้อง MT9V034

csi.MT9M114: int

CSI.cid คืนค่านี้สำหรับกล้อง MT9M114

csi.BOSON320: int

CSI.cid คืนค่านี้สำหรับกล้อง BOSON 320x256

csi.BOSON640: int

CSI.cid คืนค่านี้สำหรับกล้อง BOSON 640x512

csi.LEPTON: int

CSI.cid คืนค่านี้สำหรับกล้อง LEPTON1/2/3

csi.HM01B0: int

CSI.cid คืนค่านี้สำหรับกล้อง HM01B0

csi.HM0360: int

CSI.cid คืนค่านี้สำหรับกล้อง HM0360

csi.GC2145: int

CSI.cid คืนค่านี้สำหรับกล้อง GC2145

csi.GENX320ES: int

CSI.cid คืนค่านี้สำหรับกล้อง GENX320 (engineering sample)

csi.GENX320: int

CSI.cid คืนค่านี้สำหรับกล้อง GENX320

csi.PAG7920: int

CSI.cid คืนค่านี้สำหรับกล้อง PAG7920

csi.PAG7936: int

CSI.cid คืนค่านี้สำหรับกล้อง PAG7936

csi.PAJ6100: int

CSI.cid คืนค่านี้สำหรับกล้อง PAJ6100

csi.FROGEYE2020: int

CSI.cid คืนค่านี้สำหรับกล้อง FROGEYE2020

csi.SOFTCSI: int

CSI.cid คืนค่านี้สำหรับกล้อง software CSI

csi.NORMAL: int

โหมดปกติสำหรับ CSI.special_effect

csi.NEGATIVE: int

โหมด Negative สำหรับ CSI.special_effect

csi.QCIF: int

ความละเอียด 176x144 สำหรับเซ็นเซอร์กล้อง

csi.CIF: int

ความละเอียด 352x288 สำหรับเซ็นเซอร์กล้อง

csi.QSIF: int

ความละเอียด 176x120 สำหรับเซ็นเซอร์กล้อง

csi.SIF: int

ความละเอียด 352x240 สำหรับเซ็นเซอร์กล้อง

csi.QQQVGA: int

ความละเอียด 80x60 สำหรับเซ็นเซอร์กล้อง

csi.QQVGA: int

ความละเอียด 160x120 สำหรับเซ็นเซอร์กล้อง

csi.QVGA: int

ความละเอียด 320x240 สำหรับเซ็นเซอร์กล้อง

csi.VGA: int

ความละเอียด 640x480 สำหรับเซ็นเซอร์กล้อง

csi.HQVGA: int

ความละเอียด 240x160 สำหรับเซ็นเซอร์กล้อง

csi.HVGA: int

ความละเอียด 480x320 สำหรับเซ็นเซอร์กล้อง

csi.WVGA: int

ความละเอียด 720x480 สำหรับเซ็นเซอร์กล้อง MT9V034

csi.WVGA2: int

ความละเอียด 752x480 สำหรับเซ็นเซอร์กล้อง MT9V034

csi.SVGA: int

ความละเอียด 800x600 สำหรับเซ็นเซอร์กล้อง

csi.XGA: int

ความละเอียด 1024x768 สำหรับเซ็นเซอร์กล้อง

csi.WXGA: int

ความละเอียด 1280x768 สำหรับเซ็นเซอร์กล้อง MT9M114

csi.SXGA: int

ความละเอียด 1280x1024 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV2640/OV5640 เท่านั้น

csi.SXGAM: int

ความละเอียด 1280x960 สำหรับเซ็นเซอร์กล้อง MT9M114

csi.UXGA: int

ความละเอียด 1600x1200 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV2640/OV5640 เท่านั้น

csi.HD: int

ความละเอียด 1280x720 สำหรับเซ็นเซอร์กล้อง

csi.FHD: int

ความละเอียด 1920x1080 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV5640 เท่านั้น

csi.QHD: int

ความละเอียด 2560x1440 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV5640 เท่านั้น

csi.QXGA: int

ความละเอียด 2048x1536 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV5640 เท่านั้น

csi.WQXGA: int

ความละเอียด 2560x1600 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV5640 เท่านั้น

csi.WQXGA2: int

ความละเอียด 2592x1944 สำหรับเซ็นเซอร์กล้อง ใช้งานได้เฉพาะกับกล้อง OV5640 เท่านั้น

csi.IOCTL_SET_READOUT_WINDOW: int

ตั้งค่าหน้าต่างการอ่าน ดู CSI.ioctl

csi.IOCTL_GET_READOUT_WINDOW: int

ดึงค่าหน้าต่างการอ่าน ดู CSI.ioctl

csi.IOCTL_SET_TRIGGERED_MODE: int

ตั้งค่า triggered mode สำหรับ MT9V034 ดู CSI.ioctl

csi.IOCTL_GET_TRIGGERED_MODE: int

ดึงค่าสถานะ triggered mode สำหรับ MT9V034 ดู CSI.ioctl

csi.IOCTL_SET_FOV_WIDE: int

เปิดใช้งาน CSI.framesize เพื่อเพิ่มประสิทธิภาพสำหรับมุมมองภาพมากกว่า FPS ดู CSI.ioctl

csi.IOCTL_GET_FOV_WIDE: int

คืนค่าว่า CSI.framesize กำลังเพิ่มประสิทธิภาพสำหรับมุมมองภาพมากกว่า FPS หรือไม่ ดู CSI.ioctl

csi.IOCTL_TRIGGER_AUTO_FOCUS: int

ทริกเกอร์โฟกัสอัตโนมัติบนโมดูลกล้อง OV5640 FPC ดู CSI.ioctl

csi.IOCTL_PAUSE_AUTO_FOCUS: int

หยุดโฟกัสอัตโนมัติชั่วคราว (ขณะรัน) สำหรับโมดูลกล้อง OV5640 FPC ดู CSI.ioctl

csi.IOCTL_RESET_AUTO_FOCUS: int

รีเซ็ตโฟกัสอัตโนมัติกลับเป็นค่าเริ่มต้นสำหรับโมดูลกล้อง OV5640 FPC ดู CSI.ioctl

csi.IOCTL_WAIT_ON_AUTO_FOCUS: int

รอให้โฟกัสอัตโนมัติเสร็จสิ้นบนโมดูลกล้อง OV5640 FPC ดู CSI.ioctl

csi.IOCTL_SET_NIGHT_MODE: int

เปิดหรือปิด night mode ลดอัตราเฟรมเพื่อเพิ่มการเปิดรับแสงแบบไดนามิก ดู CSI.ioctl

csi.IOCTL_GET_NIGHT_MODE: int

คืนค่าว่า night mode เปิดใช้งานหรือไม่ ดู CSI.ioctl

csi.IOCTL_LEPTON_GET_WIDTH: int

คืนค่าความกว้างความละเอียดภาพ FLIR Lepton เป็นพิกเซล ดู CSI.ioctl

csi.IOCTL_LEPTON_GET_HEIGHT: int

คืนค่าความสูงความละเอียดภาพ FLIR Lepton เป็นพิกเซล ดู CSI.ioctl

csi.IOCTL_LEPTON_GET_RADIOMETRY: int

คืนค่าประเภทของ FLIR Lepton (เป็น radiometric หรือไม่) ดู CSI.ioctl

csi.IOCTL_LEPTON_GET_REFRESH: int

คืนค่าอัตราการรีเฟรชของ FLIR Lepton เป็น Hz ดู CSI.ioctl

csi.IOCTL_LEPTON_GET_RESOLUTION: int

คืนค่าความละเอียด ADC ของ FLIR Lepton เป็นบิต ดู CSI.ioctl

csi.IOCTL_LEPTON_RUN_COMMAND: int

รัน command 16 บิตจาก FLIR Lepton SDK ดู 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_GET_FPA_TEMP: int

ดึงอุณหภูมิ FPA ของ FLIR Lepton เป็นองศาเซลเซียส ดู CSI.ioctl

csi.IOCTL_LEPTON_GET_AUX_TEMP: int

ดึงอุณหภูมิ AUX ของ FLIR Lepton เป็นองศาเซลเซียส ดู 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_LEPTON_GET_RANGE: int

คืนค่าช่วงอุณหภูมิที่ใช้สำหรับ measurement mode ดู CSI.ioctl

csi.IOCTL_HIMAX_MD_ENABLE: int

ควบคุมอินเทอร์รัปต์การตรวจจับการเคลื่อนไหวบน HM01B0 ดู CSI.ioctl

csi.IOCTL_HIMAX_MD_WINDOW: int

ตั้งค่าหน้าต่างการตรวจจับการเคลื่อนไหวบน HM01B0 ดู CSI.ioctl

csi.IOCTL_HIMAX_MD_THRESHOLD: int

ตั้งค่าขีดแบ่งการตรวจจับการเคลื่อนไหวบน HM01B0 ดู CSI.ioctl

csi.IOCTL_HIMAX_MD_CLEAR: int

ล้างอินเทอร์รัปต์การตรวจจับการเคลื่อนไหวบน HM01B0 ดู CSI.ioctl

csi.IOCTL_HIMAX_OSC_ENABLE: int

ควบคุม oscillator ภายในบน HM01B0 ดู CSI.ioctl

csi.IOCTL_GET_RGB_STATS: int

คืนค่าสถิติ RGB จากเซ็นเซอร์กล้อง ดู 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_DISABLE: int

ปิดใช้งานตัวกรอง STC/trail ของ GENX320 --- ทุกเหตุการณ์ผ่านได้

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 ไม่ใช้งาน ไม่ถูกสร้างโดย เฟิร์มแวร์ในขณะนี้

csi.EXT_TRIGGER_RISING: int

ประเภทเหตุการณ์ GENX320 (คอลัมน์ [0]) --- พิน trigger ภายนอกของเซ็นเซอร์เห็นขอบขาขึ้น อินพุต trigger ภายนอกของ GENX320 ต่อกับสาย frame-sync ของกล้อง ซึ่งยังเชื่อมต่อกับ P10 บน processor และ pin header ด้วย X/Y ไม่ใช้งาน

csi.EXT_TRIGGER_FALLING: int

ประเภทเหตุการณ์ GENX320 (คอลัมน์ [0]) --- พิน trigger ภายนอกของเซ็นเซอร์เห็นขอบขาลง อินพุต trigger ภายนอกของ GENX320 ต่อกับสาย frame-sync ของกล้อง ซึ่งยังเชื่อมต่อกับ P10 บน processor และ pin header ด้วย X/Y ไม่ใช้งาน