csi --- sensor kamera

Modul csi adalah antarmuka modern berorientasi objek untuk sensor kamera pada OpenMV Cam. Setiap sensor fisik direpresentasikan oleh sebuah instans CSI, sehingga papan imager multispektral yang memadukan sensor warna dengan sensor termal atau sensor kejadian dapat menggerakkan masing-masing secara independen dengan meneruskan cid yang berbeda ke konstruktor. Kamera dengan satu sensor cukup menginstansiasi satu CSI.

Objek CSI memiliki konfigurasi sensor secara penuh -- format piksel, ukuran bingkai/jendela, eksposur/gain/white-balance, mirror horizontal dan flip hardware, pola uji color-bar, clock laju bingkai, ROI untuk auto-eksposur, dan perintah ioctl khusus chip. Bingkai diambil dengan CSI.snapshot(), yang mengembalikan image.Image yang didukung oleh buffer bingkai.

Modul ini menggantikan modul sensor warisan (yang mengekspos fungsionalitas yang sama sebagai fungsi-fungsi tingkat modul yang terikat ke satu sensor tersembunyi). Kode baru sebaiknya menggunakan CSI.

Contoh penggunaan:

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

Penggunaan Asyncio

Loop CSI.snapshot() yang memblokir di atas tidak bekerja sama dengan event loop asyncio -- saat snapshot menunggu bingkai berikutnya, setiap coroutine lain dalam program dibekukan. Agar loop pengambilan gambar dapat berdampingan dengan pekerjaan bersamaan lainnya (klien UART, pemantau tombol, tugas jaringan), bungkus CSI dalam adaptor kecil yang mengubah snapshot menjadi coroutine yang mendukung await dengan polling snapshot(blocking=False) dan mengalah ke event loop di antara pemeriksaan:

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__ meneruskan setiap atribut lainnya (reset, pixformat, framesize, tombol-tombol sensor) ke CSI yang mendasarinya sehingga wrapper adalah pengganti langsung. Panggilan non-blocking pertama juga memulai pengambilan DMA kamera jika belum berjalan, sehingga tidak diperlukan bootstrap tambahan.

Loop pengambilan gambar kemudian cocok dalam program asyncio yang lebih besar sebagai coroutine lainnya saja:

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

Pengaturan framebuffers tetap penting dalam bentuk ini -- mode buffer tunggal membuat snapshot(blocking=False) mengembalikan None hingga bingkai berikutnya diambil, sementara double atau triple buffering memperlancar itu sehingga wrapper biasanya menemukan bingkai yang di-buffer menunggu pada polling pertama. Lihat capstone AsyncCSI pada tutorial asyncio untuk panduan lengkap.

class CSI -- Antarmuka Sensor Kamera

Kelas CSI digunakan untuk mengontrol sensor kamera.

class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)

Buat objek untuk berkomunikasi dengan sensor kamera. Pada papan dengan beberapa sensor, objek CSI tertentu dapat dipilih dengan meneruskan cid seperti csi.LEPTON untuk memilih modul sensor FLIR Lepton. Jika cid adalah -1 maka sensor utama dipilih (biasanya modul kamera warna pada papan multi-sensor).

Jika delays adalah False maka semua penundaan waktu stabilisasi di driver csi dinonaktifkan. Secara default, driver sensor menunda setelah reset/perubahan mode untuk mencegah bingkai rusak dikembalikan oleh CSI.snapshot. Menonaktifkan penundaan memungkinkan Anda memperbarui secara batch dan menerapkan satu penundaan di akhir sebelum memanggil CSI.snapshot.

Jika fflush adalah False maka flushing buffer bingkai otomatis yang disebutkan di CSI.framebuffers dinonaktifkan. Ini menghapus batas waktu pada bingkai di fifo buffer bingkai.

stream memilih apakah CSI ini adalah sumber stream yang dikirim ke IDE. Jika None (default), CSI menjadi sumber stream hanya jika itu adalah sensor utama (non-tambahan). Berikan True untuk memaksa CSI ini menjadi sumber stream, atau nilai false apa pun untuk membiarkan sumber stream yang ada tidak berubah.

Metode

reset(hard: bool = True) None

Menginisialisasi sensor kamera. Melakukan reset hardware dengan mempertukarkan sinyal RESET GPIO ke modul kamera jika hard adalah True. hard harus disetel ke false saat mereset sensor kamera tambahan yang berbagi sinyal RESET GPIO yang sama dengan modul utama.

shutdown(enable: bool) None

Menempatkan kamera ke mode daya yang lebih rendah dari sleep (tetapi kamera harus direset saat dibangunkan).

sleep(enable: bool) None

Menempatkan kamera ke sleep jika enable adalah True. Jika tidak, membangunkannya kembali.

flush() None

Menyalin isi buffer bingkai saat ini ke pratinjau IDE. Panggil ini setelah CSI.snapshot terakhir jika skrip berakhir sehingga IDE menampilkan bingkai terakhir.

snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None

Mengambil gambar menggunakan kamera dan mengembalikan objek image.Image.

Jika time dan/atau frames diteruskan, snapshot akan memblokir selama sebanyak time milidetik dan/atau frames yang diambil dari kamera. Kedua argumen dapat digunakan secara bersamaan. Setelah time dan/atau frames berlalu, snapshot akan mengembalikan None.

blocking dapat berupa False untuk mengaktifkan perilaku non-blocking yang akan menyebabkan snapshot mengembalikan None ketika citra berikutnya dari kamera belum siap, versus menunggu.

image dapat berupa objek image.Image lain untuk diperbarui dengan citra baru yang diambil dari kamera alih-alih mengembalikan objek image.Image baru. Isi citra sebelumnya ditimpa melalui salinan mendalam.

Jika CSI.auto_rotation diaktifkan, metode ini akan mengembalikan image.Image yang sudah diputar.

width() int

Mengembalikan lebar resolusi sensor.

height() int

Mengembalikan tinggi resolusi sensor.

cid() int

Mengembalikan ID chip modul kamera. Bandingkan dengan salah satu dari 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, atau csi.SOFTCSI.

readable() bool

Mengembalikan True jika ada citra yang siap dikembalikan oleh CSI.snapshot sehingga panggilan ke snapshot tidak akan memblokir.

pixformat(pixformat: int | None = None) int | None

Mengatur format piksel untuk modul kamera ke salah satu dari csi.GRAYSCALE, csi.RGB565, csi.BAYER, csi.YUV422, atau csi.JPEG (hanya pada OV2640/OV5640).

Mengembalikan pixformat saat ini jika dipanggil tanpa argumen.

framesize(framesize: int | Tuple[int, int] | None = None) int | None

Mengatur ukuran bingkai untuk modul kamera ke salah satu konstanta ukuran (misalnya csi.QVGA, csi.VGA, csi.HD, dll. --- lihat bagian konstanta).

Atau, Anda dapat meneruskan ukuran bingkai kustom sebagai tuple (w, h). Ketika CSI.snapshot dipanggil, ukuran bingkai kustom akan dievaluasi terhadap aturan DMA. Umumnya ukuran bingkai perlu merupakan kelipatan 8 piksel dan/atau 16 byte.

Mengembalikan ukuran bingkai saat ini jika dipanggil tanpa argumen.

framerate(rate: int | None = None) int | None

Mengatur laju bingkai dalam Hz untuk modul kamera.

Mengembalikan laju bingkai saat ini jika dipanggil tanpa argumen.

Catatan

CSI.framerate bekerja dengan menjatuhkan bingkai yang diterima oleh modul kamera untuk menjaga laju bingkai pada atau di bawah laju yang ditentukan. Secara default, kamera akan berjalan pada laju bingkai maksimum. Jika diimplementasikan untuk sensor kamera tertentu, CSI.framerate juga akan mengurangi laju bingkai sensor kamera secara internal untuk menghemat daya dan meningkatkan kualitas citra dengan meningkatkan eksposur sensor. CSI.framerate mungkin bertentangan dengan CSI.auto_exposure pada beberapa kamera.

window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None

Mengatur resolusi kamera ke sub-wilayah dari resolusi saat ini. roi adalah tuple (x, y, w, h). Anda juga dapat meneruskan (w, h) dan jendela akan dipusatkan.

Mengembalikan tuple (x, y, w, h) saat ini jika dipanggil tanpa argumen.

gainceiling(gainceiling: int) bool

Atur gainceiling citra kamera ke salah satu dari 2, 4, 8, 16, 32, 64, atau 128.

Mengembalikan True jika berhasil dan False jika gagal.

brightness(brightness: int) bool

Atur kecerahan citra kamera.

Mengembalikan True jika berhasil dan False jika gagal.

contrast(contrast: int) bool

Atur kontras citra kamera.

Mengembalikan True jika berhasil dan False jika gagal.

saturation(saturation: int) bool

Atur saturasi citra kamera.

Mengembalikan True jika berhasil dan False jika gagal.

quality(quality: int) bool

Atur kualitas kompresi JPEG citra kamera. 0 - 100.

Mengembalikan True jika berhasil dan False jika gagal.

Catatan

Hanya untuk kamera OV2640/OV5640.

colorbar(enable: bool) bool

Mengaktifkan mode color bar (True) atau menonaktifkannya (False). Default adalah nonaktif.

Mengembalikan True jika berhasil dan False jika gagal.

auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None

enable mengaktifkan kontrol gain otomatis (True) atau menonaktifkannya (False). Kamera mulai dengan kontrol gain otomatis aktif.

Jika enable adalah False, Anda dapat mengatur gain tetap dalam desibel dengan gain_db.

Jika enable adalah True, Anda dapat mengatur batas maksimum gain dalam desibel dengan gain_db_ceiling untuk algoritma kontrol gain otomatis.

Catatan

Anda juga perlu mematikan white balance jika ingin melacak warna.

gain_db() float

Mengembalikan nilai gain kamera saat ini dalam desibel.

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

enable mengaktifkan kontrol eksposur otomatis (True) atau menonaktifkannya (False). Kamera mulai dengan kontrol eksposur otomatis aktif.

Jika enable adalah False, Anda dapat mengatur waktu eksposur tetap dalam mikrodetik dengan exposure_us.

Catatan

Algoritma eksposur otomatis kamera cukup konservatif tentang seberapa banyak mereka menyesuaikan nilai eksposur dan umumnya akan menghindari mengubah nilai eksposur secara besar-besaran. Sebaliknya, mereka banyak mengubah nilai gain untuk menghadapi perubahan pencahayaan.

exposure_us() int

Mengembalikan nilai eksposur kamera saat ini dalam mikrodetik.

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

enable mengaktifkan white balance otomatis (True) atau menonaktifkannya (False). Kamera mulai dengan white balance otomatis aktif.

Jika enable adalah False, Anda dapat mengatur gain tetap dalam desibel untuk saluran merah, hijau, dan biru masing-masing dengan rgb_gain_db.

Catatan

Anda juga perlu mematikan kontrol gain jika ingin melacak warna.

rgb_gain_db() Tuple[float, float, float]

Mengembalikan tuple (r, g, b) dari nilai gain merah, hijau, dan biru kamera saat ini dalam desibel.

auto_blc(enable: bool, regs: List[int] | None = None) None

Mengatur kalibrasi level hitam otomatis (BLC) pada kamera.

enable berikan True atau False untuk mengaktifkan atau menonaktifkan BLC. Anda biasanya selalu ingin ini aktif.

regs jika dinonaktifkan, Anda dapat mengatur nilai register BLC secara manual dari panggilan sebelumnya ke CSI.blc_regs.

blc_regs() List[int]

Mengembalikan register BLC sensor sebagai daftar bilangan bulat. Untuk digunakan dengan CSI.auto_blc.

hmirror(enable: bool | None = None) bool | None

Mengaktifkan mode mirror horizontal (True) atau menonaktifkannya (False). Default adalah nonaktif.

Mengembalikan pengaturan saat ini jika dipanggil tanpa argumen.

vflip(enable: bool | None = None) bool | None

Mengaktifkan mode flip vertikal (True) atau menonaktifkannya (False). Default adalah nonaktif.

Mengembalikan pengaturan saat ini jika dipanggil tanpa argumen.

transpose(enable: bool | None = None) bool | None

Mengaktifkan mode transpose (True) atau menonaktifkannya (False). Default adalah nonaktif.

  • vflip=False, hmirror=False, transpose=False -> rotasi 0 derajat

  • vflip=True, hmirror=False, transpose=True -> rotasi 90 derajat

  • vflip=True, hmirror=True, transpose=False -> rotasi 180 derajat

  • vflip=False, hmirror=True, transpose=True -> rotasi 270 derajat

Mengembalikan pengaturan saat ini jika dipanggil tanpa argumen.

auto_rotation(enable: bool | None = None) bool | None

Mengaktifkan mode rotasi otomatis (True) atau menonaktifkannya (False). Default adalah nonaktif.

Mengembalikan pengaturan saat ini jika dipanggil tanpa argumen.

Catatan

Metode ini hanya berfungsi ketika OpenMV Cam memiliki imu yang terpasang dan diaktifkan secara otomatis.

framebuffers(count: int | None = None) int | None

Mengatur jumlah buffer bingkai yang digunakan untuk menerima data citra. Secara default, OpenMV Cam akan mencoba mengalokasikan jumlah buffer bingkai maksimum yang bisa dilakukannya. Realokasi terjadi setiap kali CSI.pixformat, CSI.framesize, atau CSI.window dipanggil.

count sebesar 1 (buffer tunggal), 2 (double buffer), atau 3 (triple buffer) memilih mode pengambilan yang sesuai. Berikan 4 atau lebih untuk menempatkan driver ke mode FIFO video di mana buffer count diantrekan --- berguna untuk perekaman video ke kartu SD. Pada penjatuhan bingkai, semua buffer bingkai kecuali yang aktif dihapus sehingga CSI.snapshot selalu mengembalikan bingkai terbaru.

Mengembalikan jumlah saat ini jika dipanggil tanpa argumen.

special_effect(effect: int) bool

Mengatur efek digital khusus (salah satu dari csi.NORMAL atau csi.NEGATIVE).

Mengembalikan True jika berhasil dan False jika gagal.

lens_correction(enable: bool, radi: int, coef: int) bool

enable True untuk mengaktifkan, False untuk menonaktifkan. radi radius bilangan bulat piksel untuk dikoreksi. coef daya koreksi.

Mengembalikan True jika berhasil dan False jika gagal.

vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None

Mendaftarkan callback cb untuk dieksekusi (dalam konteks interupsi) setiap kali modul kamera menghasilkan bingkai baru (tetapi sebelum bingkai diterima).

cb mengambil satu argumen dan diteruskan status saat ini dari pin vsync setelah berubah.

Mengembalikan callback yang terdaftar jika dipanggil tanpa argumen. Berikan nilai non-callable apa pun untuk menghapus callback.

frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None

Mendaftarkan callback cb untuk dieksekusi (dalam konteks interupsi) setiap kali modul kamera menghasilkan bingkai baru dan bingkai siap dibaca melalui CSI.snapshot.

cb tidak mengambil argumen. Gunakan ini untuk menjadwalkan pembacaan bingkai nanti dengan micropython.schedule().

Mengembalikan callback yang terdaftar jika dipanggil tanpa argumen. Berikan nilai non-callable apa pun untuk menghapus callback.

ioctl(request: int, *args) Any

Menjalankan permintaan khusus sensor. request adalah salah satu konstanta IOCTL_*; argumen posisional yang tersisa dan nilai kembalian tergantung pada permintaan. Permintaan yang didukung dikelompokkan berdasarkan keluarga sensor di bawah ini.

Generik (sensor apa pun):

ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))

ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))

Mengatur jendela readout sensor. Jendela yang lebih kecil meningkatkan laju bingkai dengan mengorbankan field-of-view.

ioctl(IOCTL_GET_READOUT_WINDOW)

Mengembalikan jendela readout saat ini sebagai tuple (x, y, w, h).

ioctl(IOCTL_SET_TRIGGERED_MODE, enable)

Mengaktifkan (True) atau menonaktifkan (False) mode triggered pada MT9V034.

ioctl(IOCTL_GET_TRIGGERED_MODE)

Mengembalikan status mode triggered saat ini sebagai bool.

ioctl(IOCTL_SET_FOV_WIDE, enable)

Ketika True, instruksikan framesize() untuk mengoptimalkan untuk field-of-view daripada laju bingkai.

ioctl(IOCTL_GET_FOV_WIDE)

Mengembalikan status FOV-wide saat ini sebagai bool.

ioctl(IOCTL_SET_NIGHT_MODE, enable)

Mengaktifkan (True) atau menonaktifkan (False) "mode malam" cahaya rendah sensor. Hanya OV7725 dan OV5640.

ioctl(IOCTL_GET_NIGHT_MODE)

Mengembalikan status mode malam saat ini sebagai bool.

ioctl(IOCTL_GET_RGB_STATS)

Mengembalikan 4-tuple statistik saluran RGB mentah (r, gb, gr, b) yang dibaca dari sensor (biasanya digunakan untuk penyetelan white-balance).

OV5640 FPC -- auto-fokus:

ioctl(IOCTL_TRIGGER_AUTO_FOCUS)

Memulai sapuan auto-fokus pada modul OV5640 FPC.

ioctl(IOCTL_PAUSE_AUTO_FOCUS)

Menjeda sapuan auto-fokus yang sedang berlangsung.

ioctl(IOCTL_RESET_AUTO_FOCUS)

Mengatur ulang posisi auto-fokus ke default.

ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)

ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)

Memblokir hingga sapuan auto-fokus saat ini selesai. timeout_ms default ke 5000 jika dihilangkan.

FLIR Lepton:

ioctl(IOCTL_LEPTON_GET_WIDTH)

Mengembalikan lebar citra Lepton dalam piksel.

ioctl(IOCTL_LEPTON_GET_HEIGHT)

Mengembalikan tinggi citra Lepton dalam piksel.

ioctl(IOCTL_LEPTON_GET_RADIOMETRY)

Mengembalikan tipe Lepton (radiometrik atau tidak) sebagai int.

ioctl(IOCTL_LEPTON_GET_REFRESH)

Mengembalikan laju refresh Lepton dalam Hz.

ioctl(IOCTL_LEPTON_GET_RESOLUTION)

Mengembalikan resolusi ADC Lepton dalam bit.

ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)

Menjalankan perintah FLIR Lepton SDK. cmd adalah id perintah 16-bit yang ditentukan oleh SDK.

ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)

Menulis atribut Lepton SDK. attr_id adalah id atribut 16-bit; payload adalah bytes/bytearray yang panjangnya harus kelipatan 16 bit.

ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)

Membaca atribut Lepton SDK. attr_id adalah id atribut 16-bit; words adalah jumlah kata 16-bit yang dibaca. Mengembalikan bytearray.

ioctl(IOCTL_LEPTON_GET_FPA_TEMP)

Mengembalikan suhu focal-plane-array Lepton dalam derajat Celsius.

ioctl(IOCTL_LEPTON_GET_AUX_TEMP)

Mengembalikan suhu tambahan Lepton dalam derajat Celsius.

ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)

ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)

Beralih Lepton antara AGC dan output suhu langsung. measurement_enabled=True mengaktifkan output suhu langsung. Flag opsional high_temp_enabled memilih rentang suhu tinggi.

ioctl(IOCTL_LEPTON_GET_MODE)

Mengembalikan 2-tuple (measurement_enabled, high_temp_enabled).

ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))

Mengatur rentang suhu yang dipetakan ke 0..255 ketika mode pengukuran diaktifkan.

ioctl(IOCTL_LEPTON_GET_RANGE)

Mengembalikan rentang (min_celsius, max_celsius) saat ini.

Himax HM01B0 -- deteksi gerakan:

ioctl(IOCTL_HIMAX_MD_ENABLE, enable)

Mengaktifkan (True) atau menonaktifkan (False) blok deteksi gerakan on-sensor HM01B0.

ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))

ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))

Mengatur jendela deteksi gerakan pada HM01B0.

ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)

Mengatur ambang batas deteksi gerakan (0 -- 255).

ioctl(IOCTL_HIMAX_MD_CLEAR)

Menghapus latch interupsi deteksi gerakan.

ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)

Mengaktifkan (True) atau menonaktifkan (False) osilator internal HM01B0.

Prophesee GENX320 -- sensor kejadian:

ioctl(IOCTL_GENX320_SET_BIASES, preset)

Menerapkan preset bias. preset adalah salah satu konstanta GENX320_BIASES_*.

ioctl(IOCTL_GENX320_SET_BIAS, bias, value)

Mengatur satu bias. bias adalah salah satu konstanta GENX320_BIAS_*; value adalah pengaturan integer.

ioctl(IOCTL_GENX320_SET_AFK, enable)

ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)

Mengonfigurasi filter anti-flicker. enable adalah bool; argumen frekuensi opsional mengatur passband filter.

ioctl(IOCTL_GENX320_SET_STC, mode)

ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])

Mengonfigurasi filter kontras spatio-temporal. mode adalah salah satu konstanta GENX320_STC_*; hingga dua argumen lebih lanjut bersifat mode-spesifik.

ioctl(IOCTL_GENX320_SET_MODE, mode)

ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)

Beralih sensor antara mode bingkai dan kejadian. mode adalah salah satu konstanta GENX320_MODE_*. Untuk mode kejadian, evt_res adalah panjang sumbu baris dari buffer kejadian yang diteruskan ke IOCTL_GENX320_READ_EVENTS.

ioctl(IOCTL_GENX320_READ_EVENTS, buf)

Membaca kejadian ke dalam buf, sebuah ndarray uint16 dengan bentuk (EVT_res, 6) di mana EVT_res adalah pangkat dua antara 1024 dan 65536. Kolomnya adalah:

  • [0] -- tipe kejadian (PIX_OFF_EVENT / PIX_ON_EVENT / trigger).

  • [1] -- detik.

  • [2] -- milidetik.

  • [3] -- mikrodetik.

  • [4] -- koordinat x.

  • [5] -- koordinat y.

Mengembalikan jumlah kejadian yang ditulis.

ioctl(IOCTL_GENX320_READ_EVENTS_RAW)

Mengembalikan image.Image yang berisi bingkai kejadian mentah dari GENX320.

ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)

Menonaktifkan piksel yang noise-nya lebih dari sigma standar deviasi dari distribusi normal. iterations adalah jumlah integer dari pass kalibrasi. Mengembalikan jumlah piksel yang dinonaktifkan.

color_palette(palette: int | None = None) int | None

Mengatur palet warna untuk digunakan dalam hal seperti konversi skala abu-abu FLIR Lepton ke RGB565 atau visualisasi kejadian GENX320. Salah satu dari image.PALETTE_RAINBOW, image.PALETTE_IRONBOW, dan (ketika didukung) image.PALETTE_DEPTH, image.PALETTE_EVT_DARK, atau image.PALETTE_EVT_LIGHT.

Mengembalikan pengaturan saat ini jika dipanggil tanpa argumen.

__write_reg(address: int, value: int) None

Tulis value ke register kamera pada address.

Catatan

Lihat lembar data kamera untuk info register.

__read_reg(address: int) int

Baca register kamera pada address.

Catatan

Lihat lembar data kamera untuk info register.

Fungsi

csi.devices() List[int]

Mengembalikan daftar ID chip sensor yang terdeteksi.

Konstanta

csi.BINARY: int

Format piksel BINARY (bitmap). Setiap piksel berukuran 1-bit. Berguna untuk penyimpanan mask; dapat digunakan dengan image.Image().

csi.GRAYSCALE: int

Format piksel GRAYSCALE (Y dari YUV422). Setiap piksel berukuran 8-bit.

csi.RGB565: int

Format piksel RGB565. Setiap piksel berukuran 16-bit (5-bit merah, 6-bit hijau, 5-bit biru).

csi.BAYER: int

Format piksel citra RAW BAYER.

csi.YUV422: int

Format piksel YUV422. Setiap piksel disimpan sebagai nilai Y skala abu-abu 8-bit diikuti oleh nilai warna U/V 8-bit bergantian yang dibagi antara dua nilai Y (Y1, U, Y2, V, ...). Hanya beberapa metode pemrosesan citra yang bekerja dengan YUV422.

csi.JPEG: int

Mode JPEG. Modul kamera menghasilkan citra JPEG yang dikompresi. Gunakan CSI.quality untuk mengontrol kualitas JPEG. Hanya berfungsi untuk kamera OV2640/OV5640.

csi.OV2640: int

CSI.cid mengembalikan ini untuk kamera OV2640.

csi.OV5640: int

CSI.cid mengembalikan ini untuk kamera OV5640.

csi.OV7670: int

CSI.cid mengembalikan ini untuk kamera OV7670.

csi.OV7690: int

CSI.cid mengembalikan ini untuk kamera OV7690.

csi.OV7725: int

CSI.cid mengembalikan ini untuk kamera OV7725.

csi.OV9650: int

CSI.cid mengembalikan ini untuk kamera OV9650.

csi.MT9V022: int

CSI.cid mengembalikan ini untuk kamera MT9V022.

csi.MT9V024: int

CSI.cid mengembalikan ini untuk kamera MT9V024.

csi.MT9V032: int

CSI.cid mengembalikan ini untuk kamera MT9V032.

csi.MT9V034: int

CSI.cid mengembalikan ini untuk kamera MT9V034.

csi.MT9M114: int

CSI.cid mengembalikan ini untuk kamera MT9M114.

csi.BOSON320: int

CSI.cid mengembalikan ini untuk kamera BOSON 320x256.

csi.BOSON640: int

CSI.cid mengembalikan ini untuk kamera BOSON 640x512.

csi.LEPTON: int

CSI.cid mengembalikan ini untuk kamera LEPTON1/2/3.

csi.HM01B0: int

CSI.cid mengembalikan ini untuk kamera HM01B0.

csi.HM0360: int

CSI.cid mengembalikan ini untuk kamera HM0360.

csi.GC2145: int

CSI.cid mengembalikan ini untuk kamera GC2145.

csi.GENX320ES: int

CSI.cid mengembalikan ini untuk kamera GENX320 (sampel rekayasa).

csi.GENX320: int

CSI.cid mengembalikan ini untuk kamera GENX320.

csi.PAG7920: int

CSI.cid mengembalikan ini untuk kamera PAG7920.

csi.PAG7936: int

CSI.cid mengembalikan ini untuk kamera PAG7936.

csi.PAJ6100: int

CSI.cid mengembalikan ini untuk kamera PAJ6100.

csi.FROGEYE2020: int

CSI.cid mengembalikan ini untuk kamera FROGEYE2020.

csi.SOFTCSI: int

CSI.cid mengembalikan ini untuk kamera software CSI.

csi.NORMAL: int

Mode normal untuk CSI.special_effect.

csi.NEGATIVE: int

Mode negatif untuk CSI.special_effect.

csi.QCIF: int

Resolusi 176x144 untuk sensor kamera.

csi.CIF: int

Resolusi 352x288 untuk sensor kamera.

csi.QSIF: int

Resolusi 176x120 untuk sensor kamera.

csi.SIF: int

Resolusi 352x240 untuk sensor kamera.

csi.QQQVGA: int

Resolusi 80x60 untuk sensor kamera.

csi.QQVGA: int

Resolusi 160x120 untuk sensor kamera.

csi.QVGA: int

Resolusi 320x240 untuk sensor kamera.

csi.VGA: int

Resolusi 640x480 untuk sensor kamera.

csi.HQVGA: int

Resolusi 240x160 untuk sensor kamera.

csi.HVGA: int

Resolusi 480x320 untuk sensor kamera.

csi.WVGA: int

Resolusi 720x480 untuk sensor kamera MT9V034.

csi.WVGA2: int

Resolusi 752x480 untuk sensor kamera MT9V034.

csi.SVGA: int

Resolusi 800x600 untuk sensor kamera.

csi.XGA: int

Resolusi 1024x768 untuk sensor kamera.

csi.WXGA: int

Resolusi 1280x768 untuk sensor kamera MT9M114.

csi.SXGA: int

Resolusi 1280x1024 untuk sensor kamera. Hanya berfungsi untuk kamera OV2640/OV5640.

csi.SXGAM: int

Resolusi 1280x960 untuk sensor kamera MT9M114.

csi.UXGA: int

Resolusi 1600x1200 untuk sensor kamera. Hanya berfungsi untuk kamera OV2640/OV5640.

csi.HD: int

Resolusi 1280x720 untuk sensor kamera.

csi.FHD: int

Resolusi 1920x1080 untuk sensor kamera. Hanya berfungsi untuk kamera OV5640.

csi.QHD: int

Resolusi 2560x1440 untuk sensor kamera. Hanya berfungsi untuk kamera OV5640.

csi.QXGA: int

Resolusi 2048x1536 untuk sensor kamera. Hanya berfungsi untuk kamera OV5640.

csi.WQXGA: int

Resolusi 2560x1600 untuk sensor kamera. Hanya berfungsi untuk kamera OV5640.

csi.WQXGA2: int

Resolusi 2592x1944 untuk sensor kamera. Hanya berfungsi untuk kamera OV5640.

csi.IOCTL_SET_READOUT_WINDOW: int

Mengatur jendela readout. Lihat CSI.ioctl.

csi.IOCTL_GET_READOUT_WINDOW: int

Mendapatkan jendela readout. Lihat CSI.ioctl.

csi.IOCTL_SET_TRIGGERED_MODE: int

Mengatur mode triggered untuk MT9V034. Lihat CSI.ioctl.

csi.IOCTL_GET_TRIGGERED_MODE: int

Mendapatkan status mode triggered untuk MT9V034. Lihat CSI.ioctl.

csi.IOCTL_SET_FOV_WIDE: int

Mengaktifkan CSI.framesize untuk mengoptimalkan field-of-view dibandingkan FPS. Lihat CSI.ioctl.

csi.IOCTL_GET_FOV_WIDE: int

Mengembalikan apakah CSI.framesize sedang mengoptimalkan field-of-view dibandingkan FPS. Lihat CSI.ioctl.

csi.IOCTL_TRIGGER_AUTO_FOCUS: int

Memicu auto fokus pada modul kamera OV5640 FPC. Lihat CSI.ioctl.

csi.IOCTL_PAUSE_AUTO_FOCUS: int

Menjeda auto fokus (saat berjalan) untuk modul kamera OV5640 FPC. Lihat CSI.ioctl.

csi.IOCTL_RESET_AUTO_FOCUS: int

Mengatur ulang auto fokus ke default untuk modul kamera OV5640 FPC. Lihat CSI.ioctl.

csi.IOCTL_WAIT_ON_AUTO_FOCUS: int

Menunggu auto fokus selesai pada modul kamera OV5640 FPC. Lihat CSI.ioctl.

csi.IOCTL_SET_NIGHT_MODE: int

Mengaktifkan atau menonaktifkan mode malam. Mengurangi laju bingkai untuk meningkatkan eksposur secara dinamis. Lihat CSI.ioctl.

csi.IOCTL_GET_NIGHT_MODE: int

Mengembalikan apakah mode malam diaktifkan. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_WIDTH: int

Mengembalikan lebar resolusi citra FLIR Lepton dalam piksel. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_HEIGHT: int

Mengembalikan tinggi resolusi citra FLIR Lepton dalam piksel. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_RADIOMETRY: int

Mengembalikan tipe FLIR Lepton (radiometrik atau tidak). Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_REFRESH: int

Mengembalikan laju refresh FLIR Lepton dalam Hz. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_RESOLUTION: int

Mengembalikan resolusi ADC FLIR Lepton dalam bit. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_RUN_COMMAND: int

Menjalankan perintah 16-bit dari FLIR Lepton SDK. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_SET_ATTRIBUTE: int

Mengatur atribut FLIR Lepton dari FLIR Lepton SDK. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_ATTRIBUTE: int

Mendapatkan atribut FLIR Lepton dari FLIR Lepton SDK. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_FPA_TEMP: int

Mendapatkan suhu FPA FLIR Lepton dalam Celsius. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_AUX_TEMP: int

Mendapatkan suhu AUX FLIR Lepton dalam Celsius. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_SET_MODE: int

Mengatur driver FLIR Lepton ke mode di mana setiap piksel adalah nilai suhu. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_MODE: int

Mengembalikan apakah mode pengukuran diaktifkan untuk sensor FLIR Lepton. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_SET_RANGE: int

Mengatur rentang suhu yang dipetakan ke nilai piksel dalam mode pengukuran. Lihat CSI.ioctl.

csi.IOCTL_LEPTON_GET_RANGE: int

Mengembalikan rentang suhu yang digunakan untuk mode pengukuran. Lihat CSI.ioctl.

csi.IOCTL_HIMAX_MD_ENABLE: int

Mengontrol interupsi deteksi gerakan pada HM01B0. Lihat CSI.ioctl.

csi.IOCTL_HIMAX_MD_WINDOW: int

Mengatur jendela deteksi gerakan pada HM01B0. Lihat CSI.ioctl.

csi.IOCTL_HIMAX_MD_THRESHOLD: int

Mengatur ambang batas deteksi gerakan pada HM01B0. Lihat CSI.ioctl.

csi.IOCTL_HIMAX_MD_CLEAR: int

Menghapus interupsi deteksi gerakan pada HM01B0. Lihat CSI.ioctl.

csi.IOCTL_HIMAX_OSC_ENABLE: int

Mengontrol osilator internal pada HM01B0. Lihat CSI.ioctl.

csi.IOCTL_GET_RGB_STATS: int

Mengembalikan statistik RGB dari sensor kamera. Lihat CSI.ioctl.

csi.IOCTL_GENX320_SET_BIASES: int

Mengatur bias sensor GENX320 ke salah satu preset GENX320_BIASES_*. Lihat CSI.ioctl. Setelah CSI.reset, driver menerapkan csi.GENX320_BIASES_LOW_NOISE, bukan csi.GENX320_BIASES_DEFAULT --- gunakan ioctl ini untuk beralih ke preset yang berbeda ketika aplikasi membutuhkan lebih banyak sensitivitas atau bandwidth.

csi.GENX320_BIASES_DEFAULT: int

Default datasheet GenX320 --- sensitivitas, noise, dan bandwidth yang seimbang untuk adegan umum.

csi.GENX320_BIASES_LOW_LIGHT: int

Disetel untuk kondisi cahaya rendah --- kedua ambang batas kontras dilonggarkan untuk sensitivitas yang lebih tinggi, FO diturunkan, HPF dinonaktifkan sehingga perubahan kecerahan yang lambat masih terdaftar.

csi.GENX320_BIASES_ACTIVE_MARKER: int

Disetel untuk melacak LED yang berkedip dengan kontras tinggi (penanda aktif) --- ambang batas kontras dinaikkan sehingga hanya transisi tajam yang memicu, FO dan HPF diset tinggi untuk memaksimalkan bandwidth dan menolak drift lingkungan yang lambat, REFR=0 sehingga setiap tepi kedipan ditangkap.

csi.GENX320_BIASES_LOW_NOISE: int

Default driver --- sensitivitas lebih rendah dari DEFAULT (ambang batas kontras yang dinaikkan) dan FO yang lebih rendah untuk aktivitas noise latar yang lebih sedikit. Terbaik untuk adegan statis atau lambat di mana kejadian palsu akan mendominasi.

csi.GENX320_BIASES_HIGH_SPEED: int

Disetel untuk adegan gerakan cepat --- FO lebih tinggi untuk bandwidth piksel yang lebih luas, HPF lebih tinggi untuk menolak perubahan lambat, REFR lebih tinggi untuk waktu mati yang lebih lama setelah setiap kejadian agar readout tidak jenuh.

csi.IOCTL_GENX320_SET_BIAS: int

Mengatur satu bias sensor GENX320 ke nilai DAC. Berikan konstanta GENX320_BIAS_* (csi.GENX320_BIAS_DIFF_OFF, csi.GENX320_BIAS_DIFF_ON, csi.GENX320_BIAS_FO, csi.GENX320_BIAS_HPF, atau csi.GENX320_BIAS_REFR) dan nilai DAC integer. Setiap bias independen --- panggil ioctl ini berulang kali untuk menyetel hanya bias yang Anda butuhkan setelah menerapkan preset. Lihat CSI.ioctl.

csi.GENX320_BIAS_DIFF_OFF: int

Ambang batas kontras komparator negatif --- mengontrol seberapa banyak piksel harus menggelap sebelum csi.PIX_OFF_EVENT terpicu. Nilai lebih rendah = lebih sensitif (lebih banyak kejadian).

csi.GENX320_BIAS_DIFF_ON: int

Ambang batas kontras komparator positif --- mengontrol seberapa banyak piksel harus mencerah sebelum csi.PIX_ON_EVENT terpicu. Nilai lebih rendah = lebih sensitif (lebih banyak kejadian).

csi.GENX320_BIAS_FO: int

Frekuensi cut-off low-pass piksel --- menukar bandwidth piksel (kecepatan/latensi) dengan aktivitas noise latar. Nilai lebih tinggi = respons piksel lebih cepat, lebih banyak noise.

csi.GENX320_BIAS_HPF: int

Frekuensi cut-off high-pass piksel --- menolak perubahan kecerahan yang lambat. Nilai lebih tinggi = perubahan lebih lambat yang difilter (hanya transisi cepat yang terdaftar).

csi.GENX320_BIAS_REFR: int

Periode refrakter piksel --- waktu mati setelah piksel memancarkan kejadian di mana ia tidak dapat terpicu lagi. Nilai lebih tinggi = waktu mati lebih lama, lebih sedikit kejadian dari piksel yang sibuk.

csi.IOCTL_GENX320_SET_AFK: int

Mengatur filter anti-flicker (AFK) GENX320, yang menolak kejadian dari piksel yang berubah pada pita frekuensi periodik (pencahayaan fluoresen, display LED-driven, dll.). Berikan enable (1 untuk mengaktifkan, 0 untuk menonaktifkan) dan, saat mengaktifkan, tepi pita dalam hertz: (enable, freq_low_hz, freq_high_hz). Lihat CSI.ioctl.

csi.IOCTL_GENX320_SET_STC: int

Mengatur mode filter kontras spatio-temporal (STC) GENX320. Berikan konstanta GENX320_STC_* (csi.GENX320_STC_DISABLE, csi.GENX320_STC_ONLY, csi.GENX320_STC_TRAIL_ONLY, csi.GENX320_STC_TRAIL) diikuti oleh ambang batas yang diperlukan mode (dalam milidetik). Lihat CSI.ioctl.

csi.GENX320_STC_DISABLE: int

Menonaktifkan filter STC/trail GENX320 --- setiap kejadian lolos.

csi.GENX320_STC_ONLY: int

Mempertahankan kejadian kedua dari burst; menjatuhkan kejadian pertama dan kejadian selanjutnya. Mengambil satu parameter, stc_threshold dalam milidetik --- kejadian dalam jendela tersebut dari kejadian sebelumnya pada piksel yang sama dianggap bagian dari burst yang sama.

csi.GENX320_STC_TRAIL_ONLY: int

Mempertahankan kejadian pertama dari burst; menjatuhkan kejadian berikutnya pada piksel yang sama hingga trail_threshold telah berlalu. Mengambil satu parameter, trail_threshold dalam milidetik.

csi.GENX320_STC_TRAIL: int

Mempertahankan kejadian pertama dari burst ditambah tepi berikutnya --- menggabungkan csi.GENX320_STC_ONLY dan csi.GENX320_STC_TRAIL_ONLY. Mengambil dua parameter, stc_threshold dan trail_threshold (keduanya ms); sensor mengharuskan keduanya tetap dalam rasio sekitar 13:1.

csi.IOCTL_GENX320_SET_MODE: int

Mengatur mode operasi GENX320. Berikan csi.GENX320_MODE_HISTO untuk histogram kejadian on-chip (cam berperilaku seperti kamera skala abu-abu biasa pada laju bingkai yang dikonfigurasi) atau csi.GENX320_MODE_EVENT diikuti oleh panjang sumbu baris dari ndarray kejadian (pangkat dua antara 1024 dan 65536) untuk streaming kejadian mentah. Lihat CSI.ioctl.

csi.GENX320_MODE_HISTO: int

Mode histogram --- kejadian diakumulasi on-chip ke dalam bin per-piksel dan dilaporkan sebagai bingkai skala abu-abu 320x320 pada laju yang dikonfigurasi (~20-350 FPS). Cam terlihat seperti kamera biasa, sehingga semua rutinitas pemrosesan citra standar bekerja langsung.

csi.GENX320_MODE_EVENT: int

Mode kejadian --- melewati histogram on-chip dan melakukan streaming kejadian mentah ke dalam ndarray numpy dengan cap waktu mikrodetik, untuk aplikasi yang membutuhkan detail temporal penuh daripada bingkai yang sudah di-bin.

csi.IOCTL_GENX320_READ_EVENTS: int

Membaca kejadian mentah ke dalam ndarray uint16 dengan bentuk (EVT_res, 6) (dengan EVT_res sesuai ukuran buffer yang diteruskan ke csi.IOCTL_GENX320_SET_MODE). Kolomnya adalah [0] tipe kejadian (csi.PIX_OFF_EVENT, csi.PIX_ON_EVENT, csi.EXT_TRIGGER_RISING/FALLING, csi.RST_TRIGGER_RISING/FALLING), [1] cap waktu detik, [2] milidetik, [3] mikrodetik, [4] koordinat X (0-319), [5] koordinat Y (0-319). Mengembalikan jumlah kejadian yang ditulis ke buffer, membiarkan baris lama di luar jumlah itu tidak tersentuh. Lihat CSI.ioctl.

csi.IOCTL_GENX320_CALIBRATE: int

Secara otomatis menonaktifkan piksel panas --- piksel yang terpicu secara tidak wajar bahkan pada adegan statis. Driver membangun hitungan per-piksel 320x320, menghitung mean dan standar deviasi, dan menonaktifkan piksel yang hitungannya melebihi mean + sigma * stddev. Berikan anggaran hitungan kejadian (kejadian untuk dihitung sebelum menghitung statistik --- lebih tinggi = estimasi lebih dapat diandalkan, lebih lambat; ~10000 adalah default yang baik) dan sigma float (lebih rendah = lebih agresif, ~0.5 default). Mengembalikan jumlah piksel yang dinonaktifkan. Arahkan cam ke adegan statis terlebih dahulu sehingga kejadian yang didorong oleh gerakan tidak dihitung terhadap piksel yang sebenarnya baik. Lihat CSI.ioctl.

csi.IOCTL_GENX320_READ_EVENTS_RAW: int

Mengembalikan image.Image bingkai kejadian mentah dari GENX320, dengan kejadian masih dalam enkoding packed asli chip --- berguna jika Anda ingin meneruskan stream mentah ke PC untuk decoding off-line daripada memprosesnya di cam. Lihat CSI.ioctl.

csi.PIX_OFF_EVENT: int

Tipe kejadian GENX320 (kolom [0]) --- sebuah piksel mendeteksi penurunan kecerahan (ambang batas kontras negatif disilang). Kolom [4]/[5] membawa X/Y piksel.

csi.PIX_ON_EVENT: int

Tipe kejadian GENX320 (kolom [0]) --- sebuah piksel mendeteksi peningkatan kecerahan (ambang batas kontras positif disilang). Kolom [4]/[5] membawa X/Y piksel.

csi.RST_TRIGGER_RISING: int

Tipe kejadian GENX320 (kolom [0]) --- trigger reset piksel, tepi naik. X/Y tidak digunakan. Tidak dihasilkan oleh firmware saat ini.

csi.RST_TRIGGER_FALLING: int

Tipe kejadian GENX320 (kolom [0]) --- trigger reset piksel, tepi turun. X/Y tidak digunakan. Tidak dihasilkan oleh firmware saat ini.

csi.EXT_TRIGGER_RISING: int

Tipe kejadian GENX320 (kolom [0]) --- pin trigger eksternal sensor melihat tepi naik. Input trigger eksternal GENX320 dihubungkan ke jalur frame-sync kamera, juga diarahkan ke P10 pada prosesor dan header pin. X/Y tidak digunakan.

csi.EXT_TRIGGER_FALLING: int

Tipe kejadian GENX320 (kolom [0]) --- pin trigger eksternal sensor melihat tepi turun. Input trigger eksternal GENX320 dihubungkan ke jalur frame-sync kamera, juga diarahkan ke P10 pada prosesor dan header pin. X/Y tidak digunakan.