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 cid jako csi.LEPTON pro výběr senzorového modulu FLIR Lepton. Pokud je cid -1, vybere se primární senzor (typicky barevný kamerový modul na deskách s více senzory).

Pokud je delays False, 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ím CSI.snapshot.

Pokud je fflush False, je zakázáno automatické vyprazdňování snímkového bufferu zmíněné v CSI.framebuffers. Tím se odstraní jakýkoli časový limit pro snímky ve frontě FIFO snímkového bufferu.

stream určuje, zda je toto CSI zdrojem streamu odesílaného do IDE. Pokud je None (výchozí), stane se CSI zdrojem streamu pouze tehdy, je-li primárním (nikoli pomocným) senzorem. Předáním True vynutí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 hard True. hard by 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).

sleep(enable: bool) None

Uspí kameru, pokud je enable True. Jinak ji opět probudí.

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 time a/nebo frames, snapshot bude blokovat po daný počet milisekund time a/nebo počet snímků frames zachycených z kamery. Oba argumenty lze použít současně. Po uplynutí time a/nebo frames vrátí snapshot None.

blocking může být False pro 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.

image může být jiný objekt image.Image, který se aktualizuje novým obrazem zachyceným z kamery, místo vrácení nového objektu image.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.

width() int

Vrátí šířku rozlišení senzoru.

height() int

Vrátí výšku rozlišení senzoru.

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.FROGEYE2020 nebo csi.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.YUV422 nebo csi.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.HD atd. — viz část s konstantami).

Případně můžete předat vlastní velikost snímku jako n-tici (w, h). Při volání CSI.snapshot bude 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.framerate funguje 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.framerate také interně sníží snímkovou frekvenci kamerového senzoru, aby ušetřil energii a zlepšil kvalitu obrazu zvýšením expozice senzoru. CSI.framerate může na některých kamerách kolidovat s CSI.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í. roi je 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í True při úspěchu a False při selhání.

brightness(brightness: int) bool

Nastaví jas obrazu kamery.

Vrátí True při úspěchu a False při selhání.

contrast(contrast: int) bool

Nastaví kontrast obrazu kamery.

Vrátí True při úspěchu a False při selhání.

saturation(saturation: int) bool

Nastaví sytost obrazu kamery.

Vrátí True při úspěchu a False při selhání.

quality(quality: int) bool

Nastaví kvalitu JPEG komprese obrazu kamery. 0 - 100.

Vrátí True při úspěchu a False př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í True při úspěchu a False při selhání.

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

enable zapne (True) nebo vypne (False) automatické řízení zisku. Kamera se spouští se zapnutým automatickým řízením zisku.

Pokud je enable False, můžete nastavit pevný zisk v decibelech pomocí gain_db.

Pokud je enable True, můžete nastavit maximální horní mez zisku v decibelech pomocí gain_db_ceiling pro algoritmus automatického řízení zisku.

Poznámka

Pokud chcete sledovat barvy, musíte vypnout také vyvážení bílé.

gain_db() float

Vrátí aktuální hodnotu zisku kamery v decibelech.

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

enable zapne (True) nebo vypne (False) automatické řízení expozice. Kamera se spouští se zapnutým automatickým řízením expozice.

Pokud je enable False, 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í.

exposure_us() int

Vrátí aktuální hodnotu expozice kamery v mikrosekundách.

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

enable zapne (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 enable False, 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.

enable předejte True nebo False pro zapnutí nebo vypnutí BLC. Obvykle ji chcete mít vždy zapnutou.

regs pokud 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.framesize nebo CSI.window.

count 1 (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řazeno count bufferů — 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že CSI.snapshot vž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.NORMAL nebo csi.NEGATIVE).

Vrátí True při úspěchu a False při selhání.

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

enable True pro povolení, False pro zakázání. radi celočíselný poloměr pixelů k opravě. coef síla korekce.

Vrátí True při úspěchu a False př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).

cb př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.

cb nepř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. request je jedna z konstant IOCTL_*; 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, instruuje framesize(), 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_ms má 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. cmd je 16bitové ID příkazu definované SDK.

ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)

Zapíše atribut Lepton SDK. attr_id je 16bitové ID atributu; payload je bytes/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_id je 16bitové ID atributu; words je 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=True povolí přímý teplotní výstup. Volitelný příznak high_temp_enabled vybí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 (0255).

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. preset je jedna z konstant GENX320_BIASES_*.

ioctl(IOCTL_GENX320_SET_BIAS, bias, value)

Nastaví jednotlivý bias. bias je jedna z konstant GENX320_BIAS_*; value je celočíselné nastavení.

ioctl(IOCTL_GENX320_SET_AFK, enable)

ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)

Konfiguruje protiblikací filtr. enable je 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. mode je jedna z konstant GENX320_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. mode je jedna z konstant GENX320_MODE_*. Pro event režim je evt_res délka řádkové osy event bufferu předaného do IOCTL_GENX320_READ_EVENTS.

ioctl(IOCTL_GENX320_READ_EVENTS, buf)

Přečte události do buf, uint16 ndarray tvaru (EVT_res, 6), kde EVT_res je 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řadnice x.

  • [5] – souřadnice y.

Vrátí počet zapsaných událostí.

ioctl(IOCTL_GENX320_READ_EVENTS_RAW)

Vrátí image.Image obsahující syrový event snímek z GENX320.

ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)

Vypne pixely, jejichž šum je více než sigma směrodatných odchylek od normálního rozdělení. iterations je 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_IRONBOW a (pokud je podporováno) image.PALETTE_DEPTH, image.PALETTE_EVT_DARK nebo image.PALETTE_EVT_LIGHT.

Vrátí aktuální nastavení, pokud je volána bez argumentů.

__write_reg(address: int, value: int) None

Zapíše value do registru kamery na adrese address.

Poznámka

Informace o registrech najdete v datovém listu kamery.

__read_reg(address: int) int

Přečte registr kamery na adrese address.

Poznámka

Informace o registrech najdete v datovém listu kamery.

Funkce

csi.devices() List[int]

Vrátí seznam detekovaných ID čipů senzorů.

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

Formát pixelů GRAYSCALE (Y z YUV422). Každý pixel je 8bitový.

csi.RGB565: int

Formát pixelů RGB565. Každý pixel je 16bitový (5 bitů červená, 6 bitů zelená, 5 bitů modrá).

csi.BAYER: int

Formát pixelů obrazu RAW BAYER.

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

CSI.cid vrací tuto hodnotu pro kameru OV2640.

csi.OV5640: int

CSI.cid vrací tuto hodnotu pro kameru OV5640.

csi.OV7670: int

CSI.cid vrací tuto hodnotu pro kameru OV7670.

csi.OV7690: int

CSI.cid vrací tuto hodnotu pro kameru OV7690.

csi.OV7725: int

CSI.cid vrací tuto hodnotu pro kameru OV7725.

csi.OV9650: int

CSI.cid vrací tuto hodnotu pro kameru OV9650.

csi.MT9V022: int

CSI.cid vrací tuto hodnotu pro kameru MT9V022.

csi.MT9V024: int

CSI.cid vrací tuto hodnotu pro kameru MT9V024.

csi.MT9V032: int

CSI.cid vrací tuto hodnotu pro kameru MT9V032.

csi.MT9V034: int

CSI.cid vrací tuto hodnotu pro kameru MT9V034.

csi.MT9M114: int

CSI.cid vrací tuto hodnotu pro kameru MT9M114.

csi.BOSON320: int

CSI.cid vrací tuto hodnotu pro kameru BOSON 320x256.

csi.BOSON640: int

CSI.cid vrací tuto hodnotu pro kameru BOSON 640x512.

csi.LEPTON: int

CSI.cid vrací tuto hodnotu pro kamery LEPTON1/2/3.

csi.HM01B0: int

CSI.cid vrací tuto hodnotu pro kameru HM01B0.

csi.HM0360: int

CSI.cid vrací tuto hodnotu pro kameru HM0360.

csi.GC2145: int

CSI.cid vrací tuto hodnotu pro kameru GC2145.

csi.GENX320ES: int

CSI.cid vrací tuto hodnotu pro kameru GENX320 (inženýrský vzorek).

csi.GENX320: int

CSI.cid vrací tuto hodnotu pro kameru GENX320.

csi.PAG7920: int

CSI.cid vrací tuto hodnotu pro kameru PAG7920.

csi.PAG7936: int

CSI.cid vrací tuto hodnotu pro kameru PAG7936.

csi.PAJ6100: int

CSI.cid vrací tuto hodnotu pro kameru PAJ6100.

csi.FROGEYE2020: int

CSI.cid vrací tuto hodnotu pro kameru FROGEYE2020.

csi.SOFTCSI: int

CSI.cid vrací tuto hodnotu pro softwarovou kameru CSI.

csi.NORMAL: int

Normální režim pro CSI.special_effect.

csi.NEGATIVE: int

Negativní režim pro CSI.special_effect.

csi.QCIF: int

Rozlišení 176x144 pro kamerový senzor.

csi.CIF: int

Rozlišení 352x288 pro kamerový senzor.

csi.QSIF: int

Rozlišení 176x120 pro kamerový senzor.

csi.SIF: int

Rozlišení 352x240 pro kamerový senzor.

csi.QQQVGA: int

Rozlišení 80x60 pro kamerový senzor.

csi.QQVGA: int

Rozlišení 160x120 pro kamerový senzor.

csi.QVGA: int

Rozlišení 320x240 pro kamerový senzor.

csi.VGA: int

Rozlišení 640x480 pro kamerový senzor.

csi.HQVGA: int

Rozlišení 240x160 pro kamerový senzor.

csi.HVGA: int

Rozlišení 480x320 pro kamerový senzor.

csi.WVGA: int

Rozlišení 720x480 pro kamerový senzor MT9V034.

csi.WVGA2: int

Rozlišení 752x480 pro kamerový senzor MT9V034.

csi.SVGA: int

Rozlišení 800x600 pro kamerový senzor.

csi.XGA: int

Rozlišení 1024x768 pro kamerový senzor.

csi.WXGA: int

Rozlišení 1280x768 pro kamerový senzor MT9M114.

csi.SXGA: int

Rozlišení 1280x1024 pro kamerový senzor. Funguje pouze pro kamery OV2640/OV5640.

csi.SXGAM: int

Rozlišení 1280x960 pro kamerový senzor MT9M114.

csi.UXGA: int

Rozlišení 1600x1200 pro kamerový senzor. Funguje pouze pro kamery OV2640/OV5640.

csi.HD: int

Rozlišení 1280x720 pro kamerový senzor.

csi.FHD: int

Rozlišení 1920x1080 pro kamerový senzor. Funguje pouze pro kameru OV5640.

csi.QHD: int

Rozlišení 2560x1440 pro kamerový senzor. Funguje pouze pro kameru OV5640.

csi.QXGA: int

Rozlišení 2048x1536 pro kamerový senzor. Funguje pouze pro kameru OV5640.

csi.WQXGA: int

Rozlišení 2560x1600 pro kamerový senzor. Funguje pouze pro kameru OV5640.

csi.WQXGA2: int

Rozlišení 2592x1944 pro kamerový senzor. Funguje pouze pro kameru OV5640.

csi.IOCTL_SET_READOUT_WINDOW: int

Nastaví okno čtení. Viz CSI.ioctl.

csi.IOCTL_GET_READOUT_WINDOW: int

Získá okno čtení. Viz CSI.ioctl.

csi.IOCTL_SET_TRIGGERED_MODE: int

Nastaví spouštěný režim pro MT9V034. Viz CSI.ioctl.

csi.IOCTL_GET_TRIGGERED_MODE: int

Získá stav spouštěného režimu pro MT9V034. Viz CSI.ioctl.

csi.IOCTL_SET_FOV_WIDE: int

Povolí, aby CSI.framesize optimalizoval pro zorné pole místo FPS. Viz CSI.ioctl.

csi.IOCTL_GET_FOV_WIDE: int

Vrátí, zda CSI.framesize optimalizuje pro zorné pole místo FPS. Viz CSI.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_GET_NIGHT_MODE: int

Vrátí, zda je noční režim povolen. 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_RADIOMETRY: int

Vrátí typ FLIR Lepton (radiometrický nebo ne). Viz CSI.ioctl.

csi.IOCTL_LEPTON_GET_REFRESH: int

Vrátí obnovovací frekvenci FLIR Lepton v Hz. Viz CSI.ioctl.

csi.IOCTL_LEPTON_GET_RESOLUTION: int

Vrátí ADC rozlišení FLIR Lepton v bitech. Viz CSI.ioctl.

csi.IOCTL_LEPTON_RUN_COMMAND: int

Vykoná 16bitový příkaz z FLIR Lepton SDK. Viz CSI.ioctl.

csi.IOCTL_LEPTON_SET_ATTRIBUTE: int

Nastaví atribut FLIR Lepton z FLIR Lepton SDK. Viz CSI.ioctl.

csi.IOCTL_LEPTON_GET_ATTRIBUTE: int

Získá atribut FLIR Lepton z FLIR Lepton SDK. 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_LEPTON_GET_RANGE: int

Vrátí teplotní rozsah použitý pro režim měření. Viz CSI.ioctl.

csi.IOCTL_HIMAX_MD_ENABLE: int

Řídí přerušení detekce pohybu na HM01B0. Viz CSI.ioctl.

csi.IOCTL_HIMAX_MD_WINDOW: int

Nastaví okno detekce pohybu na HM01B0. Viz CSI.ioctl.

csi.IOCTL_HIMAX_MD_THRESHOLD: int

Nastaví práh detekce pohybu na HM01B0. Viz CSI.ioctl.

csi.IOCTL_HIMAX_MD_CLEAR: int

Vymaže přerušení detekce pohybu na HM01B0. Viz CSI.ioctl.

csi.IOCTL_HIMAX_OSC_ENABLE: int

Řídí interní oscilátor na HM01B0. Viz CSI.ioctl.

csi.IOCTL_GET_RGB_STATS: int

Vrátí statistiky RGB z kamerového senzoru. Viz CSI.ioctl.

csi.IOCTL_GENX320_SET_BIASES: int

Nastaví biasy senzoru GENX320 na jednu z předvoleb GENX320_BIASES_*. Viz CSI.ioctl. Po CSI.reset ovladač aplikuje csi.GENX320_BIASES_LOW_NOISE, nikoli csi.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_HPF nebo csi.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. Viz CSI.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). Viz CSI.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). Viz CSI.ioctl.

csi.GENX320_STC_DISABLE: int

Zakáže STC/trail filtr GENX320 — každá událost projde.

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_threshold v 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_threshold v milisekundách.

csi.GENX320_STC_TRAIL: int

Ponechá první událost dávky plus následující hrany — kombinuje csi.GENX320_STC_ONLY a csi.GENX320_STC_TRAIL_ONLY. Přijímá dva parametry, stc_threshold a trail_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_HISTO pro on-chip histogram událostí (kamera se chová jako běžná kamera ve stupních šedi při nakonfigurované snímkové frekvenci) nebo csi.GENX320_MODE_EVENT následovaný délkou řádkové osy event ndarray (mocnina dvou mezi 1024 a 65536) pro syrový streaming událostí. Viz CSI.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 ndarray s 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 ndarray tvaru (EVT_res, 6) (s EVT_res odpovídajícím velikosti bufferu předané do csi.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é. Viz CSI.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. Viz CSI.ioctl.

csi.IOCTL_GENX320_READ_EVENTS_RAW: int

Vrátí syrový event snímek image.Image z 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. Viz CSI.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.

csi.EXT_TRIGGER_RISING: int

Typ události GENX320 (sloupec [0]) — externí spouštěcí pin senzoru zaznamenal náběžnou hranu. Externí spouštěcí vstup GENX320 je propojen s linkou frame-sync kamery, rovněž vedenou na P10 na procesoru a na pinovém headeru. X/Y se nepoužívají.

csi.EXT_TRIGGER_FALLING: int

Typ události GENX320 (sloupec [0]) — externí spouštěcí pin senzoru zaznamenal sestupnou hranu. Externí spouštěcí vstup GENX320 je propojen s linkou frame-sync kamery, rovněž vedenou na P10 na procesoru a na pinovém headeru. X/Y se nepoužívají.