csi — kamerové senzory¶
Modul csi je moderní, objektově orientované rozhraní ke kamerovému senzoru (nebo senzorům) na OpenMV Cam. Každý fyzický senzor je reprezentován instancí CSI, takže multispektrální zobrazovací desky, které kombinují barevný senzor s termálním nebo event senzorem, mohou každý z nich ovládat nezávisle předáním jiného cid konstruktoru. Kamery s jediným senzorem prostě vytvoří jednu instanci CSI.
Objekt CSI vlastní kompletní konfiguraci senzoru – formát pixelů, velikost snímku / okno, expozici / zisk / vyvážení bílé, hardwarové zrcadlení a převrácení, testovací vzor barevných pruhů, hodiny snímkové frekvence, ROI pro automatickou expozici a příkazy ioctl specifické pro daný čip. Snímky se zachytávají pomocí CSI.snapshot(), která vrací image.Image podloženou snímkovým bufferem (frame buffer).
Tento modul nahrazuje starší modul sensor (který poskytoval stejnou funkcionalitu jako funkce na úrovni modulu vázané na jediný skrytý senzor). Nový kód by měl používat CSI.
Příklad použití:
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()
Použití s asyncio¶
Blokující smyčka CSI.snapshot() výše nespolupracuje se smyčkou událostí asyncio – zatímco snapshot čeká na další snímek, každá další korutina v programu je zmrazena. Aby zachytávací smyčka mohla koexistovat s další souběžnou prací (klient UART, hlídač tlačítka, síťová úloha), obalte CSI do malého adaptéru, který z snapshot udělá korutinu kompatibilní s await tím, že dotazuje snapshot(blocking=False) a mezi kontrolami předává řízení smyčce událostí:
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__ přeposílá každý jiný atribut (reset, pixformat, framesize, ovládací prvky senzoru) podkladovému objektu CSI, takže obal je plnohodnotnou náhradou. První neblokující volání také spustí DMA zachytávání kamery, pokud ještě neběželo, takže není potřeba žádná další inicializace.
Zachytávací smyčka pak zapadá do většího asyncio programu jako jen další korutina:
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())
Nastavení framebuffers má v této podobě stále význam – režim s jediným bufferem způsobí, že snapshot(blocking=False) vrací None, dokud není zachycen další snímek, zatímco dvojité nebo trojité bufferování to vyhladí, takže obal obvykle najde bufferovaný snímek připravený už při prvním dotazu. Úplný návod najdete v závěrečné části AsyncCSI v tutoriálu o asyncio.
třída CSI – rozhraní kamerového senzoru (Camera Sensor Interface)¶
Třída CSI slouží k ovládání kamerového senzoru.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Vytvoří objekt pro komunikaci s kamerovým senzorem. Na deskách s více senzory lze konkrétní objekt CSI vybrat předáním
cidjakocsi.LEPTONpro výběr senzorového modulu FLIR Lepton. Pokud jecid-1, vybere se primární senzor (typicky barevný kamerový modul na deskách s více senzory).Pokud je
delaysFalse, jsou všechna zpoždění pro ustálení v ovladači csi zakázána. Ve výchozím nastavení ovladač senzoru po resetu / změně režimu zavádí zpoždění, aby zabránil vrácení poškozených snímků funkcíCSI.snapshot. Zakázání zpoždění umožňuje dávkovat aktualizace a aplikovat jediné zpoždění na konci před volánímCSI.snapshot.Pokud je
fflushFalse, je zakázáno automatické vyprazdňování snímkového bufferu zmíněné vCSI.framebuffers. Tím se odstraní jakýkoli časový limit pro snímky ve frontě FIFO snímkového bufferu.streamurčuje, zda je toto CSI zdrojem streamu odesílaného do IDE. Pokud jeNone(výchozí), stane se CSI zdrojem streamu pouze tehdy, je-li primárním (nikoli pomocným) senzorem. PředánímTruevynutíte, aby toto CSI bylo zdrojem streamu, nebo libovolnou nepravdivou hodnotou ponecháte stávající zdroj streamu beze změny.Metody¶
- reset(hard: bool = True) None¶
Inicializuje kamerový senzor. Provede hardwarový reset přepnutím signálu RESET GPIO ke kamerovému modulu, pokud je
hardTrue.hardby měl být nastaven na false při resetování pomocných kamerových senzorů, které sdílejí stejný signál RESET GPIO jako primární modul.
- shutdown(enable: bool) None¶
Přepne kameru do nižšího energetického režimu než spánek (ale kamera musí být po probuzení resetována).
- flush() None¶
Zkopíruje aktuální obsah snímkového bufferu do náhledu IDE. Toto volejte po posledním
CSI.snapshot, pokud se skript ukončuje, aby IDE zobrazilo poslední snímek.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Pořídí snímek pomocí kamery a vrátí objekt
image.Image.Pokud je předán
timea/neboframes, snapshot bude blokovat po daný počet milisekundtimea/nebo počet snímkůframeszachycených z kamery. Oba argumenty lze použít současně. Po uplynutítimea/neboframesvrátí snapshotNone.blockingmůže býtFalsepro povolení neblokujícího chování, které způsobí, že snapshot vrátíNone, když další obraz z kamery není připraven, místo aby čekal.imagemůže být jiný objektimage.Image, který se aktualizuje novým obrazem zachyceným z kamery, místo vrácení nového objektuimage.Image. Předchozí obsah obrazu je přepsán hlubokou kopií.Pokud je povoleno
CSI.auto_rotation, vrátí tato metoda již otočenýimage.Image.
- cid() int¶
Vrátí ID čipu kamerového modulu. Porovnejte jej s libovolnou z hodnot
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.FROGEYE2020nebocsi.SOFTCSI.
- readable() bool¶
Vrátí
True, pokud je k dispozici obraz připravený k vrácení funkcíCSI.snapshot, takže volání snapshot nebude blokovat.
- pixformat(pixformat: int | None = None) int | None¶
Nastaví formát pixelů pro kamerový modul na jednu z hodnot
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422nebocsi.JPEG(pouze na OV2640/OV5640).Vrátí aktuální pixformat, pokud je volána bez argumentů.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Nastaví velikost snímku pro kamerový modul na jednu z konstant velikosti (např.
csi.QVGA,csi.VGA,csi.HDatd. — viz část s konstantami).Případně můžete předat vlastní velikost snímku jako n-tici
(w, h). Při voláníCSI.snapshotbude vlastní velikost snímku vyhodnocena vůči pravidlům DMA. Obecně musí být velikosti snímku násobkem 8 pixelů a/nebo 16 bajtů.Vrátí aktuální velikost snímku, pokud je volána bez argumentů.
- framerate(rate: int | None = None) int | None¶
Nastaví snímkovou frekvenci v Hz pro kamerový modul.
Vrátí aktuální snímkovou frekvenci, pokud je volána bez argumentů.
Poznámka
CSI.frameratefunguje tak, že zahazuje snímky přijaté kamerovým modulem, aby udržel snímkovou frekvenci na úrovni zadané hodnoty nebo pod ní. Ve výchozím nastavení poběží kamera na maximální snímkové frekvenci. Pokud je to pro daný kamerový senzor implementováno,CSI.frameratetaké interně sníží snímkovou frekvenci kamerového senzoru, aby ušetřil energii a zlepšil kvalitu obrazu zvýšením expozice senzoru.CSI.frameratemůže na některých kamerách kolidovat sCSI.auto_exposure.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Nastaví rozlišení kamery na podoblast aktuálního rozlišení.
roije n-tice(x, y, w, h). Můžete také předat(w, h)a okno bude vycentrováno.Vrátí aktuální n-tici
(x, y, w, h), pokud je volána bez argumentů.
- gainceiling(gainceiling: int) bool¶
Nastaví horní mez zisku obrazu kamery na jednu z hodnot 2, 4, 8, 16, 32, 64 nebo 128.
Vrátí
Truepři úspěchu aFalsepři selhání.
- brightness(brightness: int) bool¶
Nastaví jas obrazu kamery.
Vrátí
Truepři úspěchu aFalsepři selhání.
- contrast(contrast: int) bool¶
Nastaví kontrast obrazu kamery.
Vrátí
Truepři úspěchu aFalsepři selhání.
- saturation(saturation: int) bool¶
Nastaví sytost obrazu kamery.
Vrátí
Truepři úspěchu aFalsepři selhání.
- quality(quality: int) bool¶
Nastaví kvalitu JPEG komprese obrazu kamery. 0 - 100.
Vrátí
Truepři úspěchu aFalsepři selhání.Poznámka
Pouze pro kamery OV2640/OV5640.
- colorbar(enable: bool) bool¶
Zapne (
True) nebo vypne (False) režim barevných pruhů. Výchozí je vypnuto.Vrátí
Truepři úspěchu aFalsepři selhání.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enablezapne (True) nebo vypne (False) automatické řízení zisku. Kamera se spouští se zapnutým automatickým řízením zisku.Pokud je
enableFalse, můžete nastavit pevný zisk v decibelech pomocígain_db.Pokud je
enableTrue, můžete nastavit maximální horní mez zisku v decibelech pomocígain_db_ceilingpro algoritmus automatického řízení zisku.Poznámka
Pokud chcete sledovat barvy, musíte vypnout také vyvážení bílé.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enablezapne (True) nebo vypne (False) automatické řízení expozice. Kamera se spouští se zapnutým automatickým řízením expozice.Pokud je
enableFalse, můžete nastavit pevnou dobu expozice v mikrosekundách pomocíexposure_us.Poznámka
Algoritmy automatické expozice kamery jsou ohledně toho, o kolik upraví hodnotu expozice, dosti konzervativní a obvykle se vyhýbají výraznějším změnám hodnoty expozice. Místo toho výrazně mění hodnotu zisku, aby zvládly měnící se osvětlení.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enablezapne (True) nebo vypne (False) automatické vyvážení bílé. Kamera se spouští se zapnutým automatickým vyvážením bílé.Pokud je
enableFalse, můžete nastavit pevný zisk v decibelech pro červený, zelený a modrý kanál pomocírgb_gain_db.Poznámka
Pokud chcete sledovat barvy, musíte vypnout také řízení zisku.
- rgb_gain_db() Tuple[float, float, float]¶
Vrátí n-tici
(r, g, b)aktuálních hodnot zisku červené, zelené a modré kamery v decibelech.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Nastaví automatickou kalibraci úrovně černé (BLC) na kameře.
enablepředejteTrueneboFalsepro zapnutí nebo vypnutí BLC. Obvykle ji chcete mít vždy zapnutou.regspokud je zakázáno, můžete ručně nastavit hodnoty registrů BLC z předchozího voláníCSI.blc_regs.
- blc_regs() List[int]¶
Vrátí registry BLC senzoru jako seznam celých čísel. Pro použití s
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Zapne (
True) nebo vypne (False) režim horizontálního zrcadlení. Výchozí je vypnuto.Vrátí aktuální nastavení, pokud je volána bez argumentů.
- vflip(enable: bool | None = None) bool | None¶
Zapne (
True) nebo vypne (False) režim vertikálního převrácení. Výchozí je vypnuto.Vrátí aktuální nastavení, pokud je volána bez argumentů.
- transpose(enable: bool | None = None) bool | None¶
Zapne (
True) nebo vypne (False) režim transpozice. Výchozí je vypnuto.vflip=False, hmirror=False, transpose=False -> rotace o 0 stupňů
vflip=True, hmirror=False, transpose=True -> rotace o 90 stupňů
vflip=True, hmirror=True, transpose=False -> rotace o 180 stupňů
vflip=False, hmirror=True, transpose=True -> rotace o 270 stupňů
Vrátí aktuální nastavení, pokud je volána bez argumentů.
- auto_rotation(enable: bool | None = None) bool | None¶
Zapne (
True) nebo vypne (False) režim automatické rotace. Výchozí je vypnuto.Vrátí aktuální nastavení, pokud je volána bez argumentů.
Poznámka
Tato metoda funguje pouze tehdy, když má OpenMV Cam nainstalován
imu, a je povolena automaticky.
- framebuffers(count: int | None = None) int | None¶
Nastaví počet snímkových bufferů použitých k příjmu obrazových dat. Ve výchozím nastavení se OpenMV Cam pokusí alokovat maximální možný počet snímkových bufferů. K realokaci dochází vždy, když je volána
CSI.pixformat,CSI.framesizeneboCSI.window.count1 (jeden buffer), 2 (dvojitý buffer) nebo 3 (trojitý buffer) vybírá odpovídající režim zachytávání. Předáním 4 nebo více přepnete ovladač do režimu video FIFO, kde je do fronty zařazenocountbufferů — užitečné pro nahrávání videa na SD kartu. Při zahození snímku jsou všechny snímkové buffery kromě aktivního vymazány, takžeCSI.snapshotvždy vrátí nedávný snímek.Vrátí aktuální počet, pokud je volána bez argumentů.
- special_effect(effect: int) bool¶
Nastaví speciální digitální efekt (jeden z
csi.NORMALnebocsi.NEGATIVE).Vrátí
Truepři úspěchu aFalsepři selhání.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTruepro povolení,Falsepro zakázání.radiceločíselný poloměr pixelů k opravě.coefsíla korekce.Vrátí
Truepři úspěchu aFalsepři selhání.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Zaregistruje callback
cb, který se má vykonat (v kontextu přerušení) vždy, když kamerový modul vygeneruje nový snímek (ale před přijetím snímku).cbpřijímá jeden argument a je mu předán aktuální stav pinu vsync po změně.Vrátí zaregistrovaný callback, pokud je volána bez argumentů. Předáním libovolné nevolatelné hodnoty callback vymažete.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Zaregistruje callback
cb, který se má vykonat (v kontextu přerušení) vždy, když kamerový modul vygeneruje nový snímek a snímek je připraven ke čtení pomocíCSI.snapshot.cbnepřijímá žádné argumenty. Použijte jej k naplánování čtení snímku později pomocímicropython.schedule().Vrátí zaregistrovaný callback, pokud je volána bez argumentů. Předáním libovolné nevolatelné hodnoty callback vymažete.
- ioctl(request: int, *args) Any¶
Vykoná požadavek specifický pro senzor.
requestje jedna z konstantIOCTL_*; zbývající poziční argumenty a návratová hodnota závisí na požadavku. Podporované požadavky jsou níže seskupeny podle rodiny senzorů.Obecné (jakýkoli senzor):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Nastaví okno čtení senzoru. Menší okno zvyšuje snímkovou frekvenci na úkor zorného pole.
ioctl(IOCTL_GET_READOUT_WINDOW)Vrátí aktuální okno čtení jako n-tici
(x, y, w, h).ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Povolí (
True) nebo zakáže (False) spouštěný režim na MT9V034.ioctl(IOCTL_GET_TRIGGERED_MODE)Vrátí aktuální stav spouštěného režimu jako
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Pokud je
True, instruujeframesize(), aby optimalizoval spíše pro zorné pole než pro snímkovou frekvenci.ioctl(IOCTL_GET_FOV_WIDE)Vrátí aktuální stav FOV-wide jako
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Povolí (
True) nebo zakáže (False) „noční režim“ senzoru pro slabé osvětlení. Pouze OV7725 a OV5640.ioctl(IOCTL_GET_NIGHT_MODE)Vrátí aktuální stav nočního režimu jako
bool.ioctl(IOCTL_GET_RGB_STATS)Vrátí 4-tici syrových statistik RGB kanálů
(r, gb, gr, b)načtených ze senzoru (obvykle používaných pro ladění vyvážení bílé).
OV5640 FPC – automatické ostření:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Spustí přejezd automatického ostření na modulu OV5640 FPC.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Pozastaví probíhající přejezd automatického ostření.
ioctl(IOCTL_RESET_AUTO_FOCUS)Resetuje pozici automatického ostření na výchozí.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Blokuje, dokud nedokončí aktuální přejezd automatického ostření.
timeout_msmá výchozí hodnotu 5000, pokud je vynechán.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Vrátí šířku obrazu Lepton v pixelech.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Vrátí výšku obrazu Lepton v pixelech.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Vrátí typ senzoru Lepton (radiometrický nebo ne) jako int.
ioctl(IOCTL_LEPTON_GET_REFRESH)Vrátí obnovovací frekvenci senzoru Lepton v Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Vrátí ADC rozlišení senzoru Lepton v bitech.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Spustí příkaz FLIR Lepton SDK.
cmdje 16bitové ID příkazu definované SDK.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Zapíše atribut Lepton SDK.
attr_idje 16bitové ID atributu;payloadjebytes/bytearray, jehož délka musí být násobkem 16 bitů.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Přečte atribut Lepton SDK.
attr_idje 16bitové ID atributu;wordsje počet 16bitových slov ke čtení. Vracíbytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Vrátí teplotu ohniskové roviny (focal-plane-array) senzoru Lepton ve stupních Celsia.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Vrátí pomocnou teplotu senzoru Lepton ve stupních Celsia.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Přepne Lepton mezi výstupem AGC a přímým teplotním výstupem.
measurement_enabled=Truepovolí přímý teplotní výstup. Volitelný příznakhigh_temp_enabledvybírá vysokoteplotní rozsah.ioctl(IOCTL_LEPTON_GET_MODE)Vrátí 2-tici
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Nastaví teplotní rozsah mapovaný na
0..255, když je povolen režim měření.ioctl(IOCTL_LEPTON_GET_RANGE)Vrátí aktuální rozsah
(min_celsius, max_celsius).
Himax HM01B0 – detekce pohybu:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Povolí (
True) nebo zakáže (False) blok detekce pohybu na senzoru HM01B0.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Nastaví okno detekce pohybu na HM01B0.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Nastaví práh detekce pohybu (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Vymaže záchyt přerušení detekce pohybu.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Povolí (
True) nebo zakáže (False) interní oscilátor HM01B0.
Prophesee GENX320 – event senzor:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Aplikuje předvolbu biasu.
presetje jedna z konstantGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Nastaví jednotlivý bias.
biasje jedna z konstantGENX320_BIAS_*;valueje celočíselné nastavení.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Konfiguruje protiblikací filtr.
enableje bool; volitelné argumenty frekvence nastavují propustné pásmo filtru.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Konfiguruje prostorově-časový kontrastní filtr.
modeje jedna z konstantGENX320_STC_*; až dva další argumenty jsou specifické pro daný režim.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Přepne senzor mezi snímkovým a event režimem.
modeje jedna z konstantGENX320_MODE_*. Pro event režim jeevt_resdélka řádkové osy event bufferu předaného doIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Přečte události do
buf,uint16ndarraytvaru(EVT_res, 6), kdeEVT_resje mocnina dvou mezi 1024 a 65536. Sloupce jsou:[0]– typ události (PIX_OFF_EVENT/PIX_ON_EVENT/ spouštěč).[1]– sekundy.[2]– milisekundy.[3]– mikrosekundy.[4]– souřadnicex.[5]– souřadnicey.
Vrátí počet zapsaných událostí.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Vrátí
image.Imageobsahující syrový event snímek z GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Vypne pixely, jejichž šum je více než
sigmasměrodatných odchylek od normálního rozdělení.iterationsje celočíselný počet kalibračních průchodů. Vrátí počet zakázaných pixelů.
- color_palette(palette: int | None = None) int | None¶
Nastaví barevnou paletu používanou například pro převod stupňů šedi FLIR Lepton na RGB565 nebo pro vizualizaci událostí GENX320. Jedna z
image.PALETTE_RAINBOW,image.PALETTE_IRONBOWa (pokud je podporováno)image.PALETTE_DEPTH,image.PALETTE_EVT_DARKneboimage.PALETTE_EVT_LIGHT.Vrátí aktuální nastavení, pokud je volána bez argumentů.
Funkce¶
Konstanty¶
- csi.BINARY: int¶
Formát pixelů BINARY (bitmapa). Každý pixel je 1bitový. Užitečné pro ukládání masek; lze použít s
image.Image().
- csi.RGB565: int¶
Formát pixelů RGB565. Každý pixel je 16bitový (5 bitů červená, 6 bitů zelená, 5 bitů modrá).
- csi.YUV422: int¶
Formát pixelů YUV422. Každý pixel je uložen jako 8bitová hodnota Y ve stupních šedi následovaná střídajícími se 8bitovými barevnými hodnotami U/V sdílenými mezi dvěma hodnotami Y (Y1, U, Y2, V, …). S YUV422 funguje pouze část metod zpracování obrazu.
- csi.JPEG: int¶
Režim JPEG. Kamerový modul vydává komprimované JPEG obrazy. Pro řízení kvality JPEG použijte
CSI.quality. Funguje pouze pro kamery OV2640/OV5640.
- csi.NORMAL: int¶
Normální režim pro
CSI.special_effect.
- csi.NEGATIVE: int¶
Negativní režim pro
CSI.special_effect.
- csi.IOCTL_SET_FOV_WIDE: int¶
Povolí, aby
CSI.framesizeoptimalizoval pro zorné pole místo FPS. VizCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Vrátí, zda
CSI.framesizeoptimalizuje pro zorné pole místo FPS. VizCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Spustí automatické ostření na kamerovém modulu OV5640 FPC. Viz
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Pozastaví automatické ostření (během běhu) pro kamerový modul OV5640 FPC. Viz
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Resetuje automatické ostření na výchozí pro kamerový modul OV5640 FPC. Viz
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Počká na dokončení automatického ostření na kamerovém modulu OV5640 FPC. Viz
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Zapne nebo vypne noční režim. Snižuje snímkovou frekvenci pro dynamické zvýšení expozice. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Vrátí šířku rozlišení obrazu FLIR Lepton v pixelech. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Vrátí výšku rozlišení obrazu FLIR Lepton v pixelech. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Získá teplotu FPA FLIR Lepton ve stupních Celsia. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Získá pomocnou (AUX) teplotu FLIR Lepton ve stupních Celsia. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Přepne ovladač FLIR Lepton do režimu, kde každý pixel je hodnotou teploty. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Vrátí, zda je pro senzor FLIR Lepton povolen režim měření. Viz
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Nastaví teplotní rozsah mapovaný na hodnoty pixelů v režimu měření. Viz
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Nastaví biasy senzoru GENX320 na jednu z předvoleb
GENX320_BIASES_*. VizCSI.ioctl. PoCSI.resetovladač aplikujecsi.GENX320_BIASES_LOW_NOISE, nikolicsi.GENX320_BIASES_DEFAULT— pomocí tohoto ioctl přepněte na jinou předvolbu, když aplikace potřebuje větší citlivost nebo šířku pásma.
- csi.GENX320_BIASES_DEFAULT: int¶
Výchozí hodnoty z datového listu GenX320 — vyvážená citlivost, šum a šířka pásma pro běžné scény.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Vyladěno pro podmínky se slabým osvětlením — oba kontrastní prahy uvolněny pro vyšší citlivost, FO snížen, HPF zakázán, takže se zaznamenají i pomalé změny jasu.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Vyladěno pro sledování vysoce kontrastních blikajících LED (aktivních značek) — kontrastní prahy zvýšeny tak, aby spouštěly pouze ostré přechody, FO a HPF nastaveny vysoko pro maximalizaci šířky pásma a potlačení pomalého okolního driftu, REFR=0, takže je zachycena každá hrana bliknutí.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Výchozí hodnota ovladače — nižší citlivost než
DEFAULT(zvýšené kontrastní prahy) a nižší FO pro menší aktivitu pozadí. Nejlepší pro statické nebo pomalé scény, kde by falešné události dominovaly.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Vyladěno pro scény s rychlým pohybem — vyšší FO pro širší šířku pásma pixelu, vyšší HPF pro potlačení pomalých změn, vyšší REFR pro delší mrtvý čas po každé události, aby se odečet nezahltil.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Nastaví jednotlivý bias senzoru GENX320 na hodnotu DAC. Předejte konstantu
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFnebocsi.GENX320_BIAS_REFR) a celočíselnou hodnotu DAC. Každý bias je nezávislý — volejte toto ioctl opakovaně, abyste po aplikaci předvolby vyladili pouze biasy, které potřebujete. VizCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Záporný kontrastní práh komparátoru — určuje, o kolik musí pixel ztmavnout, než se vyvolá
csi.PIX_OFF_EVENT. Nižší hodnota = vyšší citlivost (více událostí).
- csi.GENX320_BIAS_DIFF_ON: int¶
Kladný kontrastní práh komparátoru — určuje, o kolik musí pixel zesvětlit, než se vyvolá
csi.PIX_ON_EVENT. Nižší hodnota = vyšší citlivost (více událostí).
- csi.GENX320_BIAS_FO: int¶
Mezní frekvence dolní propusti pixelu — vyvažuje šířku pásma pixelu (rychlost/latence) proti aktivitě šumu pozadí. Vyšší hodnota = rychlejší odezva pixelu, více šumu.
- csi.GENX320_BIAS_HPF: int¶
Mezní frekvence horní propusti pixelu — potlačuje pomalé změny jasu. Vyšší hodnota = více pomalých změn je odfiltrováno (zaznamenají se pouze rychlé přechody).
- csi.GENX320_BIAS_REFR: int¶
Refrakterní perioda pixelu — mrtvý čas po vyvolání události pixelem, během kterého nemůže znovu vyvolat. Vyšší hodnota = delší mrtvý čas, méně událostí z rušného pixelu.
- csi.IOCTL_GENX320_SET_AFK: int¶
Nastaví protiblikací (AFK) filtr GENX320, který potlačuje události z pixelů přepínajících se v periodickém frekvenčním pásmu (zářivkové osvětlení, displeje řízené LED apod.). Předejte
enable(1 pro povolení, 0 pro zakázání) a při povolování okraje pásma v hertzech:(enable, freq_low_hz, freq_high_hz). VizCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Nastaví režim prostorově-časového kontrastního (STC) filtru GENX320. Předejte konstantu
GENX320_STC_*(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) následovanou práhem (prahy), které daný režim vyžaduje (v milisekundách). VizCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Ponechá druhou událost dávky; zahodí první událost a všechny pozdější události. Přijímá jeden parametr,
stc_thresholdv milisekundách — události v tomto okně od předchozí události na stejném pixelu jsou považovány za součást stejné dávky.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Ponechá první událost dávky; zahodí následující události na stejném pixelu, dokud neuplyne
trail_threshold. Přijímá jeden parametr,trail_thresholdv milisekundách.
- csi.GENX320_STC_TRAIL: int¶
Ponechá první událost dávky plus následující hrany — kombinuje
csi.GENX320_STC_ONLYacsi.GENX320_STC_TRAIL_ONLY. Přijímá dva parametry,stc_thresholdatrail_threshold(oba v ms); senzor vyžaduje, aby tyto dva zůstaly přibližně v poměru 13:1.
- csi.IOCTL_GENX320_SET_MODE: int¶
Nastaví provozní režim GENX320. Předejte
csi.GENX320_MODE_HISTOpro on-chip histogram událostí (kamera se chová jako běžná kamera ve stupních šedi při nakonfigurované snímkové frekvenci) nebocsi.GENX320_MODE_EVENTnásledovaný délkou řádkové osy eventndarray(mocnina dvou mezi 1024 a 65536) pro syrový streaming událostí. VizCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Režim histogramu — události jsou akumulovány on-chip do binů na pixel a hlášeny jako 320x320 snímek ve stupních šedi při nakonfigurované frekvenci (~20-350 FPS). Kamera vypadá jako běžná kamera, takže všechny standardní rutiny zpracování obrazu fungují přímo.
- csi.GENX320_MODE_EVENT: int¶
Event režim — obchází on-chip histogram a streamuje syrové události do numpy
ndarrays mikrosekundovými časovými značkami, pro aplikace, které potřebují plný časový detail spíše než předem nabinovaný snímek.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Přečte syrové události do uint16
ndarraytvaru(EVT_res, 6)(sEVT_resodpovídajícím velikosti bufferu předané docsi.IOCTL_GENX320_SET_MODE). Sloupce jsou[0]typ události (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]časová značka v sekundách,[2]milisekundy,[3]mikrosekundy,[4]souřadnice X (0-319),[5]souřadnice Y (0-319). Vrátí počet událostí zapsaných do bufferu, přičemž starší řádky za tímto počtem ponechá nedotčené. VizCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Automaticky zakáže horké pixely — pixely, které vyvolávají události falešně i u statické scény. Ovladač vytvoří 320x320 počet zásahů na pixel, vypočítá průměr a směrodatnou odchylku a zakáže každý pixel, jehož počet překračuje
mean + sigma * stddev. Předejte rozpočet počtu událostí (události k sečtení před výpočtem statistik — vyšší = spolehlivější odhad, pomalejší; ~10000 je dobrá výchozí hodnota) a sigma jako float (nižší = agresivnější, výchozí ~0.5). Vrátí počet zakázaných pixelů. Nejprve namiřte kameru na statickou scénu, aby se události vyvolané pohybem nezapočítávaly proti pixelům, které jsou ve skutečnosti v pořádku. VizCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Vrátí syrový event snímek
image.Imagez GENX320, s událostmi stále v nativním paketovaném kódování čipu — užitečné, pokud chcete předat syrový stream do PC k offline dekódování místo jeho zpracování na kameře. VizCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
Typ události GENX320 (sloupec
[0]) — pixel detekoval pokles jasu (byl překročen práh záporného kontrastu). Sloupce[4]/[5]nesou X/Y pixelu.
- csi.PIX_ON_EVENT: int¶
Typ události GENX320 (sloupec
[0]) — pixel detekoval nárůst jasu (byl překročen práh kladného kontrastu). Sloupce[4]/[5]nesou X/Y pixelu.
- csi.RST_TRIGGER_RISING: int¶
Typ události GENX320 (sloupec
[0]) — spouštěč resetu pixelu, náběžná hrana. X/Y se nepoužívají. Firmware jej v současné době negeneruje.
- csi.RST_TRIGGER_FALLING: int¶
Typ události GENX320 (sloupec
[0]) — spouštěč resetu pixelu, sestupná hrana. X/Y se nepoužívají. Firmware jej v současné době negeneruje.