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
cidseperticsi.LEPTONuntuk memilih modul sensor FLIR Lepton. Jikacidadalah -1 maka sensor utama dipilih (biasanya modul kamera warna pada papan multi-sensor).Jika
delaysadalahFalsemaka semua penundaan waktu stabilisasi di driver csi dinonaktifkan. Secara default, driver sensor menunda setelah reset/perubahan mode untuk mencegah bingkai rusak dikembalikan olehCSI.snapshot. Menonaktifkan penundaan memungkinkan Anda memperbarui secara batch dan menerapkan satu penundaan di akhir sebelum memanggilCSI.snapshot.Jika
fflushadalahFalsemaka flushing buffer bingkai otomatis yang disebutkan diCSI.framebuffersdinonaktifkan. Ini menghapus batas waktu pada bingkai di fifo buffer bingkai.streammemilih apakah CSI ini adalah sumber stream yang dikirim ke IDE. JikaNone(default), CSI menjadi sumber stream hanya jika itu adalah sensor utama (non-tambahan). BerikanTrueuntuk 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
hardadalahTrue.hardharus 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
enableadalah True. Jika tidak, membangunkannya kembali.
- flush() None¶
Menyalin isi buffer bingkai saat ini ke pratinjau IDE. Panggil ini setelah
CSI.snapshotterakhir 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
timedan/atauframesditeruskan, snapshot akan memblokir selama sebanyaktimemilidetik dan/atauframesyang diambil dari kamera. Kedua argumen dapat digunakan secara bersamaan. Setelahtimedan/atauframesberlalu, snapshot akan mengembalikanNone.blockingdapat berupaFalseuntuk mengaktifkan perilaku non-blocking yang akan menyebabkan snapshot mengembalikanNoneketika citra berikutnya dari kamera belum siap, versus menunggu.imagedapat berupa objekimage.Imagelain untuk diperbarui dengan citra baru yang diambil dari kamera alih-alih mengembalikan objekimage.Imagebaru. Isi citra sebelumnya ditimpa melalui salinan mendalam.Jika
CSI.auto_rotationdiaktifkan, metode ini akan mengembalikanimage.Imageyang sudah diputar.
- 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, ataucsi.SOFTCSI.
- readable() bool¶
Mengembalikan
Truejika ada citra yang siap dikembalikan olehCSI.snapshotsehingga 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, ataucsi.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). KetikaCSI.snapshotdipanggil, 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.frameratebekerja 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.frameratejuga akan mengurangi laju bingkai sensor kamera secara internal untuk menghemat daya dan meningkatkan kualitas citra dengan meningkatkan eksposur sensor.CSI.frameratemungkin bertentangan denganCSI.auto_exposurepada 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.
roiadalah 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
Truejika berhasil danFalsejika gagal.
- brightness(brightness: int) bool¶
Atur kecerahan citra kamera.
Mengembalikan
Truejika berhasil danFalsejika gagal.
- contrast(contrast: int) bool¶
Atur kontras citra kamera.
Mengembalikan
Truejika berhasil danFalsejika gagal.
- saturation(saturation: int) bool¶
Atur saturasi citra kamera.
Mengembalikan
Truejika berhasil danFalsejika gagal.
- quality(quality: int) bool¶
Atur kualitas kompresi JPEG citra kamera. 0 - 100.
Mengembalikan
Truejika berhasil danFalsejika gagal.Catatan
Hanya untuk kamera OV2640/OV5640.
- colorbar(enable: bool) bool¶
Mengaktifkan mode color bar (
True) atau menonaktifkannya (False). Default adalah nonaktif.Mengembalikan
Truejika berhasil danFalsejika gagal.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enablemengaktifkan kontrol gain otomatis (True) atau menonaktifkannya (False). Kamera mulai dengan kontrol gain otomatis aktif.Jika
enableadalahFalse, Anda dapat mengatur gain tetap dalam desibel dengangain_db.Jika
enableadalahTrue, Anda dapat mengatur batas maksimum gain dalam desibel dengangain_db_ceilinguntuk algoritma kontrol gain otomatis.Catatan
Anda juga perlu mematikan white balance jika ingin melacak warna.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enablemengaktifkan kontrol eksposur otomatis (True) atau menonaktifkannya (False). Kamera mulai dengan kontrol eksposur otomatis aktif.Jika
enableadalahFalse, Anda dapat mengatur waktu eksposur tetap dalam mikrodetik denganexposure_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.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enablemengaktifkan white balance otomatis (True) atau menonaktifkannya (False). Kamera mulai dengan white balance otomatis aktif.Jika
enableadalahFalse, Anda dapat mengatur gain tetap dalam desibel untuk saluran merah, hijau, dan biru masing-masing denganrgb_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.
enableberikanTrueatauFalseuntuk mengaktifkan atau menonaktifkan BLC. Anda biasanya selalu ingin ini aktif.regsjika dinonaktifkan, Anda dapat mengatur nilai register BLC secara manual dari panggilan sebelumnya keCSI.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
imuyang 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, atauCSI.windowdipanggil.countsebesar 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 buffercountdiantrekan --- berguna untuk perekaman video ke kartu SD. Pada penjatuhan bingkai, semua buffer bingkai kecuali yang aktif dihapus sehinggaCSI.snapshotselalu mengembalikan bingkai terbaru.Mengembalikan jumlah saat ini jika dipanggil tanpa argumen.
- special_effect(effect: int) bool¶
Mengatur efek digital khusus (salah satu dari
csi.NORMALataucsi.NEGATIVE).Mengembalikan
Truejika berhasil danFalsejika gagal.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrueuntuk mengaktifkan,Falseuntuk menonaktifkan.radiradius bilangan bulat piksel untuk dikoreksi.coefdaya koreksi.Mengembalikan
Truejika berhasil danFalsejika gagal.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Mendaftarkan callback
cbuntuk dieksekusi (dalam konteks interupsi) setiap kali modul kamera menghasilkan bingkai baru (tetapi sebelum bingkai diterima).cbmengambil 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
cbuntuk dieksekusi (dalam konteks interupsi) setiap kali modul kamera menghasilkan bingkai baru dan bingkai siap dibaca melaluiCSI.snapshot.cbtidak mengambil argumen. Gunakan ini untuk menjadwalkan pembacaan bingkai nanti denganmicropython.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.
requestadalah salah satu konstantaIOCTL_*; 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, instruksikanframesize()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_msdefault 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.
cmdadalah id perintah 16-bit yang ditentukan oleh SDK.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Menulis atribut Lepton SDK.
attr_idadalah id atribut 16-bit;payloadadalahbytes/bytearrayyang panjangnya harus kelipatan 16 bit.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Membaca atribut Lepton SDK.
attr_idadalah id atribut 16-bit;wordsadalah jumlah kata 16-bit yang dibaca. Mengembalikanbytearray.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=Truemengaktifkan output suhu langsung. Flag opsionalhigh_temp_enabledmemilih 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..255ketika 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.
presetadalah salah satu konstantaGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Mengatur satu bias.
biasadalah salah satu konstantaGENX320_BIAS_*;valueadalah pengaturan integer.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Mengonfigurasi filter anti-flicker.
enableadalah 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.
modeadalah salah satu konstantaGENX320_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.
modeadalah salah satu konstantaGENX320_MODE_*. Untuk mode kejadian,evt_resadalah panjang sumbu baris dari buffer kejadian yang diteruskan keIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Membaca kejadian ke dalam
buf, sebuahndarrayuint16dengan bentuk(EVT_res, 6)di manaEVT_resadalah 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]-- koordinatx.[5]-- koordinaty.
Mengembalikan jumlah kejadian yang ditulis.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Mengembalikan
image.Imageyang berisi bingkai kejadian mentah dari GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Menonaktifkan piksel yang noise-nya lebih dari
sigmastandar deviasi dari distribusi normal.iterationsadalah 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, atauimage.PALETTE_EVT_LIGHT.Mengembalikan pengaturan saat ini jika dipanggil tanpa argumen.
Fungsi¶
Konstanta¶
- csi.BINARY: int¶
Format piksel BINARY (bitmap). Setiap piksel berukuran 1-bit. Berguna untuk penyimpanan mask; dapat digunakan dengan
image.Image().
- csi.RGB565: int¶
Format piksel RGB565. Setiap piksel berukuran 16-bit (5-bit merah, 6-bit hijau, 5-bit biru).
- 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.qualityuntuk mengontrol kualitas JPEG. Hanya berfungsi untuk kamera OV2640/OV5640.
- csi.NORMAL: int¶
Mode normal untuk
CSI.special_effect.
- csi.NEGATIVE: int¶
Mode negatif untuk
CSI.special_effect.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Mendapatkan status mode triggered untuk MT9V034. Lihat
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Mengaktifkan
CSI.framesizeuntuk mengoptimalkan field-of-view dibandingkan FPS. LihatCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Mengembalikan apakah
CSI.framesizesedang mengoptimalkan field-of-view dibandingkan FPS. LihatCSI.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_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_THRESHOLD: int¶
Mengatur ambang batas deteksi gerakan pada HM01B0. Lihat
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Mengatur bias sensor GENX320 ke salah satu preset
GENX320_BIASES_*. LihatCSI.ioctl. SetelahCSI.reset, driver menerapkancsi.GENX320_BIASES_LOW_NOISE, bukancsi.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, ataucsi.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. LihatCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Ambang batas kontras komparator negatif --- mengontrol seberapa banyak piksel harus menggelap sebelum
csi.PIX_OFF_EVENTterpicu. 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_EVENTterpicu. 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). LihatCSI.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). LihatCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Mempertahankan kejadian kedua dari burst; menjatuhkan kejadian pertama dan kejadian selanjutnya. Mengambil satu parameter,
stc_thresholddalam 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_thresholdtelah berlalu. Mengambil satu parameter,trail_thresholddalam milidetik.
- csi.GENX320_STC_TRAIL: int¶
Mempertahankan kejadian pertama dari burst ditambah tepi berikutnya --- menggabungkan
csi.GENX320_STC_ONLYdancsi.GENX320_STC_TRAIL_ONLY. Mengambil dua parameter,stc_thresholddantrail_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_HISTOuntuk histogram kejadian on-chip (cam berperilaku seperti kamera skala abu-abu biasa pada laju bingkai yang dikonfigurasi) ataucsi.GENX320_MODE_EVENTdiikuti oleh panjang sumbu baris darindarraykejadian (pangkat dua antara 1024 dan 65536) untuk streaming kejadian mentah. LihatCSI.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
ndarraynumpy 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
ndarrayuint16 dengan bentuk(EVT_res, 6)(denganEVT_ressesuai ukuran buffer yang diteruskan kecsi.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. LihatCSI.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. LihatCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Mengembalikan
image.Imagebingkai 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. LihatCSI.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.