csi — kameraérzékelők¶
A csi modul a modern, objektumorientált interfész az OpenMV Cam kameraérzékelőihez. Minden fizikai érzékelőt egy CSI példány képvisel, így a multispektrális képalkotó kártyák, amelyek egy szín-érzékelőt párosítanak egy hő- vagy eseményérzékelővel, mindegyiket önállóan vezérelhetik úgy, hogy eltérő cid értéket adnak át a konstruktornak. Az egyérzékelős kamerák egyszerűen egyetlen CSI példányt hoznak létre.
Egy CSI objektum birtokolja a teljes érzékelő-konfigurációt – képpontformátum, képkockaméret / ablak, expozíció / erősítés / fehéregyensúly, hardveres tükrözés és átfordítás, színsáv tesztmintázat, képkockasebesség-óra, automatikus expozíció ROI-ja és a chip-specifikus ioctl parancsok. A képkockákat a CSI.snapshot() rögzíti, amely a képkocka-pufferre épülő image.Image objektumot ad vissza.
Ez a modul felváltja a régi sensor modult (amely ugyanezt a funkcionalitást modulszintű függvényekként tette elérhetővé, egyetlen rejtett érzékelőhöz kötve). Az új kódnak a CSI osztályt kell használnia.
Példa a használatra:
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
Asyncio használat¶
A fenti blokkoló CSI.snapshot() ciklus nem működik együtt az asyncio eseményhurokkal – amíg a snapshot a következő képkockára vár, a program minden más korutinja be van fagyasztva. Ahhoz, hogy egy rögzítési ciklus együtt tudjon élni más párhuzamos munkával (egy UART-kliens, egy gombfigyelő, egy hálózati feladat), csomagolja a CSI objektumot egy kis adapterbe, amely a snapshot hívást await-barát korutinná alakítja a snapshot(blocking=False) lekérdezésével és az ellenőrzések között az eseményhurokhoz való átadással:
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)
A __getattr__ minden egyéb attribútumot (reset, pixformat, framesize, az érzékelő-beállítások) továbbít az alatta lévő CSI objektumnak, így a csomagoló közvetlen helyettesítő. Az első nem blokkoló hívás el is indítja a kamera DMA-rögzítését, ha az még nem futott, így nincs szükség külön rendszerindításra.
Egy rögzítési ciklus ezután úgy illeszkedik egy nagyobb asyncio programba, mint bármely másik korutin:
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())
A framebuffers beállítás ebben a formában is számít – az egypufferes mód miatt a snapshot(blocking=False) a következő képkocka rögzítéséig None értéket ad vissza, míg a kettős vagy hármas pufferelés ezt elsimítja, így a csomagoló általában már az első lekérdezésnél talál egy pufferelt képkockát. A teljes bemutatóhoz lásd az AsyncCSI záró fejezetet az asyncio oktatóanyagban.
class CSI – Kameraérzékelő-interfész¶
A CSI osztály egy kameraérzékelő vezérlésére szolgál.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Létrehoz egy objektumot a kameraérzékelővel való kommunikációhoz. Több érzékelővel rendelkező kártyákon az adott CSI objektum kiválasztható egy
cidátadásával, példáulcsi.LEPTONegy FLIR Lepton érzékelőmodul kiválasztásához. Ha acidértéke -1, akkor az elsődleges érzékelő kerül kiválasztásra (jellemzően egy színes kameramodul a több érzékelős kártyákon).Ha a
delaysértékeFalse, akkor a csi meghajtó összes beállási idő késleltetése letiltásra kerül. Alapértelmezetten az érzékelő-meghajtó visszaállítás / módváltás után késleltet, hogy megelőzze a hibás képkockák visszaadását aCSI.snapshotáltal. A késleltetések letiltása lehetővé teszi a frissítések kötegelését és egyetlen késleltetés alkalmazását a végén, aCSI.snapshothívása előtt.Ha az
fflushértékeFalse, akkor aCSI.framebuffersáltal említett automatikus képkocka-puffer ürítés letiltásra kerül. Ez eltávolítja a képkocka-puffer fifo-ban lévő képkockákra vonatkozó időkorlátot.A
streamválasztja ki, hogy ez a CSI legyen-e az IDE-nek küldött adatfolyam-forrás. HaNone(alapértelmezett), akkor a CSI csak akkor lesz az adatfolyam-forrás, ha ez az elsődleges (nem segéd) érzékelő. Adja át aTrueértéket, hogy ezt a CSI-t kényszerítse adatfolyam-forrásnak, vagy bármely hamis értéket, hogy a meglévő adatfolyam-forrást változatlanul hagyja.Metódusok¶
- reset(hard: bool = True) None¶
Inicializálja a kameraérzékelőt. Hardveres visszaállítást hajt végre a kameramodulhoz vezető RESET jel GPIO-jának váltogatásával, ha a
hardértékeTrue. Ahardértéket false-ra kell állítani olyan segéd-kameraérzékelők visszaállításakor, amelyek ugyanazon a RESET jel GPIO-n osztoznak, mint az elsődleges modul.
- shutdown(enable: bool) None¶
Az alvásnál alacsonyabb energiafogyasztású módba helyezi a kamerát (de a kamerát vissza kell állítani az ébresztéskor).
- sleep(enable: bool) None¶
Alvó állapotba helyezi a kamerát, ha az
enableTrue. Ellenkező esetben visszaébreszti.
- flush() None¶
Átmásolja az aktuális képkocka-puffer tartalmát az IDE előnézetébe. Hívja meg ezt az utolsó
CSI.snapshotután, ha a szkript befejeződik, hogy az IDE megjelenítse az utolsó képkockát.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Készít egy képet a kamerával, és visszaad egy
image.Imageobjektumot.Ha a
timeés/vagy aframesátadásra kerül, a snapshot annyitimeezredmásodpercig blokkol és/vagy annyiframesképkockát rögzít a kameráról. Mindkét argumentum egyidejűleg használható. Atimeés/vagyframesletelte után a snapshotNoneértéket ad vissza.A
blockinglehetFalsea nem blokkoló viselkedés engedélyezéséhez, ami azt eredményezi, hogy a snapshotNoneértéket ad vissza, amikor a kamera következő képe nem áll készen, ahelyett, hogy várakozna.Az
imagelehet egy másikimage.Imageobjektum, amelyet a kameráról rögzített új képpel frissít, ahelyett, hogy egy újimage.Imageobjektumot adna vissza. A korábbi képtartalom mély másolással felülíródik.Ha a
CSI.auto_rotationengedélyezve van, ez a metódus egy már elforgatottimage.Imageobjektumot ad vissza.
- cid() int¶
Visszaadja a kameramodul chip azonosítóját. Hasonlítsa össze ezeket bármelyikkel:
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, vagycsi.SOFTCSI.
- readable() bool¶
Visszaadja a
Trueértéket, ha van egy kép, amelyet aCSI.snapshotvisszaadhat, így a snapshot hívás nem blokkol.
- pixformat(pixformat: int | None = None) int | None¶
Beállítja a kameramodul képpontformátumát a következők egyikére:
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422, vagycsi.JPEG(csak az OV2640/OV5640 esetén).Argumentumok nélkül hívva visszaadja az aktuális pixformat értéket.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Beállítja a kameramodul képkockaméretét a méretkonstansok egyikére (pl.
csi.QVGA,csi.VGA,csi.HDstb. — lásd a konstansok szakaszt).Alternatívaként átadhat egy egyéni képkockaméretet
(w, h)tuple-ként. ACSI.snapshothívásakor az egyéni képkockaméret kiértékelésre kerül a DMA-szabályok alapján. A képkockaméreteknek általában 8 képpont és/vagy 16 bájt többszörösének kell lenniük.Argumentumok nélkül hívva visszaadja az aktuális framesize értéket.
- framerate(rate: int | None = None) int | None¶
Beállítja a kameramodul képkockasebességét Hz-ben.
Argumentumok nélkül hívva visszaadja az aktuális framerate értéket.
Megjegyzés
A
CSI.framerateúgy működik, hogy eldobja a kameramodul által fogadott képkockákat, hogy a képkockasebességet a megadott sebességen vagy az alatt tartsa. Alapértelmezetten a kamera a maximális képkockasebességen fut. Ha az adott kameraérzékelőhöz implementálva van, aCSI.frameratebelsőleg is csökkenti a kameraérzékelő képkockasebességét, hogy energiát takarítson meg és javítsa a képminőséget az érzékelő expozíciójának növelésével. ACSI.framerateegyes kameráknál ütközhet aCSI.auto_exposurebeállítással.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Beállítja a kamera felbontását az aktuális felbontás egy részterületére. A
roiegy(x, y, w, h)tuple. Átadhat(w, h)értéket is, ekkor az ablak középre kerül.Argumentumok nélkül hívva visszaadja az aktuális
(x, y, w, h)tuple-t.
- gainceiling(gainceiling: int) bool¶
Beállítja a kamera képének erősítési plafonját a következők egyikére: 2, 4, 8, 16, 32, 64 vagy 128.
Siker esetén
True, hiba eseténFalseértéket ad vissza.
- brightness(brightness: int) bool¶
Beállítja a kamera képének fényerejét.
Siker esetén
True, hiba eseténFalseértéket ad vissza.
- contrast(contrast: int) bool¶
Beállítja a kamera képének kontrasztját.
Siker esetén
True, hiba eseténFalseértéket ad vissza.
- saturation(saturation: int) bool¶
Beállítja a kamera képének telítettségét.
Siker esetén
True, hiba eseténFalseértéket ad vissza.
- quality(quality: int) bool¶
Beállítja a kamera képének JPEG-tömörítési minőségét. 0 - 100.
Siker esetén
True, hiba eseténFalseértéket ad vissza.Megjegyzés
Csak az OV2640/OV5640 kameráknál.
- colorbar(enable: bool) bool¶
Be- (
True) vagy kikapcsolja (False) a színsáv módot. Alapértelmezetten ki van kapcsolva.Siker esetén
True, hiba eseténFalseértéket ad vissza.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
Az
enablebe- (True) vagy kikapcsolja (False) az automatikus erősítésvezérlést. A kamera bekapcsolt automatikus erősítésvezérléssel indul.Ha az
enableértékeFalse, beállíthat egy rögzített erősítést decibelben again_dbsegítségével.Ha az
enableértékeTrue, beállíthatja a maximális erősítési plafont decibelben again_db_ceilingsegítségével az automatikus erősítésvezérlő algoritmushoz.Megjegyzés
Ha színeket szeretne követni, a fehéregyensúlyt is ki kell kapcsolnia.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
Az
enablebe- (True) vagy kikapcsolja (False) az automatikus expozícióvezérlést. A kamera bekapcsolt automatikus expozícióvezérléssel indul.Ha az
enableértékeFalse, beállíthat egy rögzített expozíciós időt mikroszekundumban azexposure_ussegítségével.Megjegyzés
A kamera automatikus expozíciós algoritmusai meglehetősen konzervatívak abban, hogy mennyivel állítják be az expozíciós értéket, és általában kerülik az expozíciós érték nagymértékű megváltoztatását. Ehelyett az erősítési értéket változtatják meg jelentősen a változó megvilágítás kezelésére.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
Az
enablebe- (True) vagy kikapcsolja (False) az automatikus fehéregyensúlyt. A kamera bekapcsolt automatikus fehéregyensúllyal indul.Ha az
enableértékeFalse, beállíthat egy rögzített erősítést decibelben a piros, zöld és kék csatornákra argb_gain_dbsegítségével.Megjegyzés
Ha színeket szeretne követni, az erősítésvezérlést is ki kell kapcsolnia.
- rgb_gain_db() Tuple[float, float, float]¶
Visszaad egy
(r, g, b)tuple-t a kamera aktuális piros, zöld és kék erősítési értékeivel decibelben.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Beállítja az automatikus feketeszint-kalibrációt (BLC) a kamerán.
Az
enableátadja aTruevagyFalseértéket a BLC be- vagy kikapcsolásához. Ezt jellemzően mindig bekapcsolva érdemes hagyni.A
regsha letiltja, akkor manuálisan beállíthatja a BLC regiszterértékeket egy korábbiCSI.blc_regshívásból.
- blc_regs() List[int]¶
Visszaadja az érzékelő BLC regisztereit egész számok listájaként. A
CSI.auto_blchasználatához.
- hmirror(enable: bool | None = None) bool | None¶
Be- (
True) vagy kikapcsolja (False) a vízszintes tükrözés módot. Alapértelmezetten ki van kapcsolva.Argumentumok nélkül hívva visszaadja az aktuális beállítást.
- vflip(enable: bool | None = None) bool | None¶
Be- (
True) vagy kikapcsolja (False) a függőleges átfordítás módot. Alapértelmezetten ki van kapcsolva.Argumentumok nélkül hívva visszaadja az aktuális beállítást.
- transpose(enable: bool | None = None) bool | None¶
Be- (
True) vagy kikapcsolja (False) a transzponálás módot. Alapértelmezetten ki van kapcsolva.vflip=False, hmirror=False, transpose=False -> 0 fokos forgatás
vflip=True, hmirror=False, transpose=True -> 90 fokos forgatás
vflip=True, hmirror=True, transpose=False -> 180 fokos forgatás
vflip=False, hmirror=True, transpose=True -> 270 fokos forgatás
Argumentumok nélkül hívva visszaadja az aktuális beállítást.
- auto_rotation(enable: bool | None = None) bool | None¶
Be- (
True) vagy kikapcsolja (False) az automatikus forgatás módot. Alapértelmezetten ki van kapcsolva.Argumentumok nélkül hívva visszaadja az aktuális beállítást.
Megjegyzés
Ez a metódus csak akkor működik, ha az OpenMV Cam rendelkezik telepített
imuegységgel, és automatikusan engedélyezésre kerül.
- framebuffers(count: int | None = None) int | None¶
Beállítja a képadatok fogadásához használt képkocka-pufferek számát. Alapértelmezetten az OpenMV Cam megpróbálja lefoglalni a lehető legtöbb képkocka-puffert. Az újrafoglalás minden alkalommal megtörténik, amikor a
CSI.pixformat,CSI.framesizevagyCSI.windowhívásra kerül.Az 1-es
count(egypufferes), 2-es (kétpufferes) vagy 3-as (hárompufferes) érték a megfelelő rögzítési módot választja ki. Adjon át 4-et vagy nagyobbat, hogy a meghajtót videó FIFO módba helyezze, aholcountpuffer kerül sorba állításra — ez SD-kártyára történő videofelvételhez hasznos. Képkocka eldobásakor az aktívon kívül minden képkocka-puffer törlésre kerül, így aCSI.snapshotmindig egy friss képkockát ad vissza.Argumentumok nélkül hívva visszaadja az aktuális darabszámot.
- special_effect(effect: int) bool¶
Beállítja a speciális digitális effektet (a
csi.NORMALvagycsi.NEGATIVEegyikére).Siker esetén
True, hiba eseténFalseértéket ad vissza.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
Az
enableTrueaz engedélyezéshez,Falsea letiltáshoz. Aradia javítandó képpontok egész sugara. Acoefa javítás erőssége.Siker esetén
True, hiba eseténFalseértéket ad vissza.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Regisztrálja a
cbvisszahívást, amely (megszakítási kontextusban) végrehajtásra kerül minden alkalommal, amikor a kameramodul új képkockát generál (de mielőtt a képkocka fogadásra kerülne).A
cbegy argumentumot vesz át, és megkapja a vsync láb aktuális állapotát a változás után.Argumentumok nélkül hívva visszaadja a regisztrált visszahívást. Adjon át bármilyen nem hívható értéket a visszahívás törléséhez.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Regisztrálja a
cbvisszahívást, amely (megszakítási kontextusban) végrehajtásra kerül minden alkalommal, amikor a kameramodul új képkockát generál, és a képkocka készen áll aCSI.snapshotáltali beolvasásra.A
cbnem vesz át argumentumot. Használja ezt egy képkocka későbbi beolvasásának ütemezésére amicropython.schedule()segítségével.Argumentumok nélkül hívva visszaadja a regisztrált visszahívást. Adjon át bármilyen nem hívható értéket a visszahívás törléséhez.
- ioctl(request: int, *args) Any¶
Végrehajt egy érzékelő-specifikus kérést. A
requestazIOCTL_*konstansok egyike; a fennmaradó pozicionális argumentumok és a visszatérési érték a kéréstől függenek. A támogatott kérések érzékelő-családonként csoportosítva vannak alább.Általános (bármely érzékelő):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Beállítja az érzékelő kiolvasási ablakát. Egy kisebb ablak növeli a képkockasebességet a látómező rovására.
ioctl(IOCTL_GET_READOUT_WINDOW)Visszaadja az aktuális kiolvasási ablakot
(x, y, w, h)tuple-ként.ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Be- (
True) vagy kikapcsolja (False) a triggerelt módot az MT9V034-en.ioctl(IOCTL_GET_TRIGGERED_MODE)Visszaadja az aktuális triggerelt-mód állapotát
boolértékként.ioctl(IOCTL_SET_FOV_WIDE, enable)Ha
True, utasítja aframesize()metódust, hogy a látómezőre optimalizáljon a képkockasebesség helyett.ioctl(IOCTL_GET_FOV_WIDE)Visszaadja az aktuális FOV-wide állapotot
boolértékként.ioctl(IOCTL_SET_NIGHT_MODE, enable)Be- (
True) vagy kikapcsolja (False) az érzékelő gyenge fényviszonyokhoz való „éjszakai módját”. Csak OV7725 és OV5640 esetén.ioctl(IOCTL_GET_NIGHT_MODE)Visszaadja az aktuális éjszakai-mód állapotot
boolértékként.ioctl(IOCTL_GET_RGB_STATS)Visszaad egy 4-elemű tuple-t az érzékelőről beolvasott nyers RGB-csatorna statisztikákkal
(r, gb, gr, b)(jellemzően fehéregyensúly-hangoláshoz használt).
OV5640 FPC – automatikus fókusz:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Elindít egy automatikus fókuszálási menetet az OV5640 FPC modulon.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Szünetelteti a folyamatban lévő automatikus fókuszálási menetet.
ioctl(IOCTL_RESET_AUTO_FOCUS)Visszaállítja az automatikus fókusz pozícióját az alapértelmezettre.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Blokkol, amíg az aktuális automatikus fókuszálási menet be nem fejeződik. A
timeout_msalapértelmezett értéke 5000, ha el van hagyva.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Visszaadja a Lepton kép szélességét képpontban.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Visszaadja a Lepton kép magasságát képpontban.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Visszaadja a Lepton típusát (radiometrikus vagy sem) int értékként.
ioctl(IOCTL_LEPTON_GET_REFRESH)Visszaadja a Lepton frissítési sebességét Hz-ben.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Visszaadja a Lepton ADC felbontását bitben.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Futtat egy FLIR Lepton SDK parancsot. A
cmdaz SDK által definiált 16 bites parancsazonosító.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Beír egy Lepton SDK attribútumot. Az
attr_ida 16 bites attribútumazonosító; apayloadegybytes/bytearray, amelynek hosszának 16 bit többszörösének kell lennie.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Beolvas egy Lepton SDK attribútumot. Az
attr_ida 16 bites attribútumazonosító; awordsa beolvasandó 16 bites szavak száma. Egybytearrayértéket ad vissza.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Visszaadja a Lepton fókuszsík-mátrix (FPA) hőmérsékletét Celsius-fokban.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Visszaadja a Lepton segédhőmérsékletét Celsius-fokban.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Átkapcsolja a Leptont az AGC és a közvetlen hőmérséklet-kimenet között. A
measurement_enabled=Trueengedélyezi a közvetlen hőmérséklet-kimenetet. Az opcionálishigh_temp_enabledjelző a magas hőmérsékletű tartományt választja ki.ioctl(IOCTL_LEPTON_GET_MODE)Visszaad egy 2-elemű tuple-t
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Beállítja a
0..255tartományba leképezett hőmérséklet-tartományt, amikor a mérési mód engedélyezve van.ioctl(IOCTL_LEPTON_GET_RANGE)Visszaadja az aktuális
(min_celsius, max_celsius)tartományt.
Himax HM01B0 – mozgásérzékelés:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Be- (
True) vagy kikapcsolja (False) a HM01B0 érzékelőn lévő mozgásérzékelő blokkját.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Beállítja a mozgásérzékelési ablakot a HM01B0-on.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Beállítja a mozgásérzékelési küszöbértéket (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Törli a mozgásérzékelési megszakítás reteszét.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Be- (
True) vagy kikapcsolja (False) a HM01B0 belső oszcillátorát.
Prophesee GENX320 – eseményérzékelő:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Alkalmaz egy bias-előbeállítást. A
presetaGENX320_BIASES_*konstansok egyike.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Beállít egyetlen bias értéket. A
biasaGENX320_BIAS_*konstansok egyike; avalueaz egész szám beállítás.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Beállítja a villódzásgátló szűrőt. Az
enableegy bool; az opcionális frekvencia-argumentumok beállítják a szűrő áteresztősávját.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Beállítja a tér-időbeli kontraszt szűrőt. A
modeaGENX320_STC_*konstansok egyike; legfeljebb két további argumentum mód-specifikus.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Átkapcsolja az érzékelőt a képkocka- és eseménymódok között. A
modeaGENX320_MODE_*konstansok egyike. Eseménymódban azevt_resaIOCTL_GENX320_READ_EVENTSszámára átadott eseménypuffer sortengely-hossza.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Beolvassa az eseményeket a
bufpufferbe, amely egy(EVT_res, 6)alakúuint16ndarray, ahol azEVT_res1024 és 65536 közötti kettőhatvány. Az oszlopok a következők:[0]– eseménytípus (PIX_OFF_EVENT/PIX_ON_EVENT/ trigger).[1]– másodpercek.[2]– ezredmásodpercek.[3]– mikroszekundumok.[4]–xkoordináta.[5]–ykoordináta.
Visszaadja a kiírt események számát.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Visszaad egy
image.Imageobjektumot, amely a GENX320 nyers eseményképkockáját tartalmazza.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Kikapcsolja azokat a képpontokat, amelyek zaja a normális eloszlástól több mint
sigmaszórásnyira van. Aziterationsa kalibrációs menetek egész száma. Visszaadja a letiltott képpontok számát.
- color_palette(palette: int | None = None) int | None¶
Beállítja a használandó színpalettát olyan dolgokhoz, mint a FLIR Lepton szürkeárnyalatos-ról RGB565-re konverzió vagy a GENX320 eseményvizualizáció. A következők egyike:
image.PALETTE_RAINBOW,image.PALETTE_IRONBOW, és (ahol támogatott)image.PALETTE_DEPTH,image.PALETTE_EVT_DARK, vagyimage.PALETTE_EVT_LIGHT.Argumentumok nélkül hívva visszaadja az aktuális beállítást.
Függvények¶
Konstansok¶
- csi.BINARY: int¶
BINARY (bitmap) képpontformátum. Minden képpont 1 bites. Maszk tárolásához hasznos; használható az
image.Image()segítségével.
- csi.RGB565: int¶
RGB565 képpontformátum. Minden képpont 16 bites (5 bit piros, 6 bit zöld, 5 bit kék).
- csi.YUV422: int¶
YUV422 képpontformátum. Minden képpont egy szürkeárnyalatos 8 bites Y értékként tárolódik, amelyet két Y érték között megosztott váltakozó 8 bites U/V színértékek követnek (Y1, U, Y2, V, …). Csak néhány képfeldolgozási metódus működik a YUV422-vel.
- csi.JPEG: int¶
JPEG mód. A kameramodul tömörített JPEG képeket ad ki. Használja a
CSI.qualitybeállítást a JPEG minőség szabályozásához. Csak az OV2640/OV5640 kameráknál működik.
- csi.NORMAL: int¶
Normál mód a
CSI.special_effectszámára.
- csi.NEGATIVE: int¶
Negatív mód a
CSI.special_effectszámára.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Lekéri a triggerelt-mód állapotát az MT9V034-hez. Lásd
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Engedélyezi, hogy a
CSI.framesizea látómezőre optimalizáljon az FPS helyett. LásdCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Visszaadja, hogy a
CSI.framesizea látómezőre optimalizál-e az FPS helyett. LásdCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Elindítja az automatikus fókuszt az OV5640 FPC kameramodulon. Lásd
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Szünetelteti az automatikus fókuszt (futás közben) az OV5640 FPC kameramodulhoz. Lásd
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Visszaállítja az automatikus fókuszt az alapértelmezettre az OV5640 FPC kameramodulhoz. Lásd
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Megvárja, amíg az automatikus fókusz befejeződik az OV5640 FPC kameramodulon. Lásd
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Be- vagy kikapcsolja az éjszakai módot. Csökkenti a képkockasebességet az expozíció dinamikus növeléséhez. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Visszaadja a FLIR Lepton kép felbontásának szélességét képpontban. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Visszaadja a FLIR Lepton kép felbontásának magasságát képpontban. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
Visszaadja a FLIR Lepton típusát (radiometrikus vagy sem). Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Visszaadja a FLIR Lepton frissítési sebességét Hz-ben. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Visszaadja a FLIR Lepton ADC felbontását bitben. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_RUN_COMMAND: int¶
Végrehajt egy 16 bites parancsot a FLIR Lepton SDK-ból. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
Beállít egy FLIR Lepton attribútumot a FLIR Lepton SDK-ból. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
Lekér egy FLIR Lepton attribútumot a FLIR Lepton SDK-ból. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Lekéri a FLIR Lepton FPA hőmérsékletét Celsius-fokban. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Lekéri a FLIR Lepton AUX hőmérsékletét Celsius-fokban. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
A FLIR Lepton meghajtót olyan módba állítja, ahol minden képpont egy hőmérsékleti érték. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Visszaadja, hogy a mérési mód engedélyezve van-e a FLIR Lepton érzékelőhöz. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Beállítja a képpontértékekhez leképezett hőmérséklet-tartományt mérési módban. Lásd
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RANGE: int¶
Visszaadja a mérési módhoz használt hőmérséklet-tartományt. Lásd
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_ENABLE: int¶
Vezérli a mozgásérzékelési megszakítást a HM01B0-on. Lásd
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_THRESHOLD: int¶
Beállítja a mozgásérzékelési küszöbértéket a HM01B0-on. Lásd
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Beállítja a GENX320 érzékelő bias értékeit a
GENX320_BIASES_*előbeállítások egyikére. LásdCSI.ioctl. ACSI.resetután a meghajtó acsi.GENX320_BIASES_LOW_NOISEértéket alkalmazza, nem acsi.GENX320_BIASES_DEFAULTértéket — használja ezt az ioctl-t egy másik előbeállításra váltáshoz, amikor az alkalmazásnak nagyobb érzékenységre vagy sávszélességre van szüksége.
- csi.GENX320_BIASES_DEFAULT: int¶
GenX320 adatlap szerinti alapértékek — kiegyensúlyozott érzékenység, zaj és sávszélesség általános jelenetekhez.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Gyenge fényviszonyokhoz hangolva — mindkét kontrasztküszöb lazítva a nagyobb érzékenységért, az FO csökkentve, a HPF letiltva, így a lassú fényerő-változások is regisztrálódnak.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Nagy kontrasztú villogó LED-ek (aktív jelölők) követéséhez hangolva — a kontrasztküszöbök megemelve, így csak az éles átmenetek váltanak ki eseményt, az FO és a HPF magasra állítva a sávszélesség maximalizálásához és a lassú környezeti sodródás elutasításához, REFR=0, így minden villanási él rögzítésre kerül.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Meghajtó alapértelmezett — alacsonyabb érzékenység, mint a
DEFAULT(megemelt kontrasztküszöbök) és alacsonyabb FO a kevesebb háttérzaj-aktivitásért. A legjobb statikus vagy lassú jelenetekhez, ahol a hamis események dominálnának.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Gyors mozgású jelenetekhez hangolva — magasabb FO a szélesebb képpont-sávszélességért, magasabb HPF a lassú változások elutasításához, magasabb REFR a hosszabb holtidőért minden esemény után, így a kiolvasás nem telítődik.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Beállít egyetlen GENX320 érzékelő bias értéket egy DAC értékre. Adjon át egy
GENX320_BIAS_*konstanst (csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPF, vagycsi.GENX320_BIAS_REFR) és egy egész szám DAC értéket. Minden bias független — hívja meg ezt az ioctl-t többször, hogy egy előbeállítás alkalmazása után csak a szükséges bias értékeket finomhangolja. LásdCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Negatív komparátor kontrasztküszöb — szabályozza, hogy egy képpontnak mennyit kell sötétednie, mielőtt egy
csi.PIX_OFF_EVENTesemény bekövetkezik. Alacsonyabb érték = érzékenyebb (több esemény).
- csi.GENX320_BIAS_DIFF_ON: int¶
Pozitív komparátor kontrasztküszöb — szabályozza, hogy egy képpontnak mennyit kell világosodnia, mielőtt egy
csi.PIX_ON_EVENTesemény bekövetkezik. Alacsonyabb érték = érzékenyebb (több esemény).
- csi.GENX320_BIAS_FO: int¶
Képpont aluláteresztő levágási frekvencia — a képpont-sávszélesség (sebesség/késleltetés) és a háttérzaj-aktivitás közötti kompromisszum. Magasabb érték = gyorsabb képpont-válasz, több zaj.
- csi.GENX320_BIAS_HPF: int¶
Képpont felüláteresztő levágási frekvencia — elutasítja a lassú fényerő-változásokat. Magasabb érték = a lassabb változások kiszűrésre kerülnek (csak a gyors átmenetek regisztrálódnak).
- csi.GENX320_BIAS_REFR: int¶
Képpont refrakter periódus — holtidő, miután egy képpont eseményt bocsát ki, amely alatt nem tud újra aktiválódni. Magasabb érték = hosszabb holtidő, kevesebb esemény egy forgalmas képpontból.
- csi.IOCTL_GENX320_SET_AFK: int¶
Beállítja a GENX320 villódzásgátló (AFK) szűrőjét, amely elutasítja a periodikus frekvenciasávban váltakozó képpontok eseményeit (fénycsöves világítás, LED-vezérelt kijelzők stb.). Adja át az
enableértéket (1 az engedélyezéshez, 0 a letiltáshoz), és engedélyezéskor a sávhatárokat hertzben:(enable, freq_low_hz, freq_high_hz). LásdCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Beállítja a GENX320 tér-időbeli kontraszt (STC) szűrő módját. Adjon át egy
GENX320_STC_*konstanst (csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL), amelyet a mód által megkövetelt küszöbérték(ek) követnek (ezredmásodpercben). LásdCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Megtartja egy sorozat második eseményét; eldobja az első eseményt és minden későbbit. Egy paramétert vesz át, a
stc_thresholdértéket ezredmásodpercben — az ugyanazon a képponton egy korábbi eseményhez képest ezen az ablakon belüli események ugyanazon sorozat részének tekintendők.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Megtartja egy sorozat első eseményét; eldobja a következő eseményeket ugyanazon a képponton, amíg a
trail_thresholdle nem telik. Egy paramétert vesz át, atrail_thresholdértéket ezredmásodpercben.
- csi.GENX320_STC_TRAIL: int¶
Megtartja egy sorozat első eseményét és a következő éleket — kombinálja a
csi.GENX320_STC_ONLYés acsi.GENX320_STC_TRAIL_ONLYmódokat. Két paramétert vesz át, astc_thresholdés atrail_thresholdértékeket (mindkettő ms); az érzékelő megköveteli, hogy a kettő nagyjából 13:1 arányon belül maradjon.
- csi.IOCTL_GENX320_SET_MODE: int¶
Beállítja a GENX320 működési módját. Adja át a
csi.GENX320_MODE_HISTOértéket a chipen lévő esemény-hisztogramhoz (a kamera úgy viselkedik, mint egy szokásos szürkeárnyalatos kamera a beállított képkockasebességen) vagy acsi.GENX320_MODE_EVENTértéket, amelyet az eseményndarraysortengely-hossza követ (1024 és 65536 közötti kettőhatvány) a nyers eseményfolyamhoz. LásdCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Hisztogram mód — az események a chipen képpontonkénti binekbe halmozódnak fel, és 320x320 szürkeárnyalatos képkockaként jelentődnek a beállított sebességen (~20-350 FPS). A kamera szokásos kameraként néz ki, így minden szabványos képfeldolgozási rutin közvetlenül működik.
- csi.GENX320_MODE_EVENT: int¶
Esemény mód — megkerüli a chipen lévő hisztogramot, és nyers eseményeket folyamként továbbít egy numpy
ndarraytömbbe mikroszekundumos időbélyegekkel, olyan alkalmazásokhoz, amelyeknek teljes időbeli részletességre van szükségük egy előre binekbe sorolt képkocka helyett.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Beolvassa a nyers eseményeket egy
(EVT_res, 6)alakú uint16ndarraytömbbe (ahol azEVT_resmegegyezik acsi.IOCTL_GENX320_SET_MODEszámára átadott puffermérettel). Az oszlopok:[0]eseménytípus (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]másodperc időbélyeg,[2]ezredmásodperc,[3]mikroszekundum,[4]X koordináta (0-319),[5]Y koordináta (0-319). Visszaadja a pufferbe kiírt események számát, érintetlenül hagyva az ezen a számon túli régebbi sorokat. LásdCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Automatikusan letiltja a forró képpontokat — olyan képpontokat, amelyek statikus jelenet esetén is hamisan aktiválódnak. A meghajtó felépít egy 320x320-as képpontonkénti találati számlálót, kiszámítja az átlagot és a szórást, majd letilt minden olyan képpontot, amelynek száma meghaladja a
mean + sigma * stddevértéket. Adjon át egy eseményszám-keretet (a statisztikák kiszámítása előtt összesítendő események száma — magasabb = megbízhatóbb becslés, lassabb; a ~10000 jó alapérték) és egy sigma float értéket (alacsonyabb = agresszívabb, ~0,5 alapérték). Visszaadja a letiltott képpontok számát. Először irányítsa a kamerát egy statikus jelenetre, hogy a mozgás által vezérelt események ne számítsanak be olyan képpontoknál, amelyek valójában rendben vannak. LásdCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Visszaad egy nyers eseményképkocka
image.Imageobjektumot a GENX320-ról, ahol az események még a chip natív csomagolt kódolásában vannak — akkor hasznos, ha a nyers folyamot egy PC-re szeretné továbbítani offline dekódoláshoz, ahelyett, hogy a kamerán dolgozná fel. LásdCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
GENX320 eseménytípus (
[0]oszlop) — egy képpont fényerő-csökkenést észlelt (a negatív-kontraszt küszöb átlépésre került). A[4]/[5]oszlopok a képpont X/Y koordinátáját hordozzák.
- csi.PIX_ON_EVENT: int¶
GENX320 eseménytípus (
[0]oszlop) — egy képpont fényerő-növekedést észlelt (a pozitív-kontraszt küszöb átlépésre került). A[4]/[5]oszlopok a képpont X/Y koordinátáját hordozzák.
- csi.RST_TRIGGER_RISING: int¶
GENX320 eseménytípus (
[0]oszlop) — képpont-visszaállítás trigger, felfutó él. Az X/Y nincs használatban. Jelenleg a firmware nem generálja.
- csi.RST_TRIGGER_FALLING: int¶
GENX320 eseménytípus (
[0]oszlop) — képpont-visszaállítás trigger, lefutó él. Az X/Y nincs használatban. Jelenleg a firmware nem generálja.