csi — senzori kamere¶
Modul csi je moderno, objektno orijentirano sučelje za senzor(e) kamere na OpenMV Cam uređaju. Svaki fizički senzor predstavljen je instancom CSI, pa višespektralne slikovne ploče koje uparuju senzor boje s termalnim ili event senzorom mogu upravljati svakim od njih neovisno prosljeđivanjem drugačijeg cid konstruktoru. Kamere s jednim senzorom samo instanciraju jedan CSI.
Objekt CSI posjeduje cjelokupnu konfiguraciju senzora – format piksela, framesize / prozor, ekspoziciju / pojačanje / balans bijele boje, hardverski zrcalni prikaz i preokret, testni uzorak s trakama boja, takt brzine sličica, ROI za automatsku ekspoziciju i naredbe ioctl specifične za čip. Sličice se snimaju pomoću CSI.snapshot(), koja vraća image.Image poduprt međuspremnikom slike.
Ovaj modul zamjenjuje stariji modul sensor (koji je istu funkcionalnost izlagao kao funkcije na razini modula vezane uz jedan skriveni senzor). Novi kod bi trebao koristiti CSI.
Primjer uporabe:
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()
Uporaba s asyncio¶
Blokirajuća petlja CSI.snapshot() iznad ne surađuje s petljom događaja asyncio – dok snapshot čeka sljedeću sličicu, svaka druga korutina u programu je zamrznuta. Da bi petlja snimanja koegzistirala s drugim istovremenim radom (UART klijent, nadzornik gumba, mrežni zadatak), omotajte CSI u mali adapter koji pretvara snapshot u korutinu prikladnu za await tako da poziva snapshot(blocking=False) i prepušta kontrolu petlji događaja između provjera:
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__ prosljeđuje svaki drugi atribut (reset, pixformat, framesize, regulatore senzora) podlježećem CSI tako da je omotač zamjena bez izmjena. Prvi neblokirajući poziv također pokreće DMA snimanje kamere ako ono već nije bilo aktivno, pa nije potrebno dodatno pokretanje.
Petlja snimanja se tada uklapa u veći asyncio program kao samo još jedna 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())
Postavka framebuffers i dalje je važna u ovom obliku – način rada s jednim međuspremnikom uzrokuje da snapshot(blocking=False) vraća None dok se ne snimi sljedeća sličica, dok dvostruko ili trostruko međuspremanje to izglađuje tako da omotač obično pronađe spremljenu sličicu koja čeka pri prvoj provjeri. Pogledajte AsyncCSI završni primjer u asyncio vodiču za potpuni opis.
klasa CSI – Sučelje senzora kamere¶
Klasa CSI koristi se za upravljanje senzorom kamere.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Stvara objekt za komunikaciju sa senzorom kamere. Na pločama s više senzora određeni CSI objekt može se odabrati prosljeđivanjem
cidpoputcsi.LEPTONza odabir FLIR Lepton senzorskog modula. Ako jecidjednak -1, odabire se primarni senzor (obično modul kamere u boji na pločama s više senzora).Ako je
delaysjednakFalse, tada su sva kašnjenja vremena stabilizacije u csi upravljačkom programu onemogućena. Prema zadanim postavkama upravljački program senzora kasni nakon resetiranja / promjene načina rada kako bi spriječio vraćanje oštećenih sličica pri pozivuCSI.snapshot. Onemogućavanje kašnjenja omogućuje vam grupiranje izmjena i primjenu jednog kašnjenja na kraju prije pozivaCSI.snapshot.Ako je
fflushjednakFalse, tada je automatsko pražnjenje međuspremnika slike spomenuto uCSI.framebuffersonemogućeno. Time se uklanja svako vremensko ograničenje za sličice u fifo redu međuspremnika slike.streamodabire je li ovaj CSI izvor toka koji se šalje u IDE. Ako jeNone(zadano), CSI postaje izvor toka samo ako je primarni (ne-pomoćni) senzor. ProslijediteTrueda prisilite ovaj CSI da bude izvor toka, ili bilo koju lažnu vrijednost da postojeći izvor toka ostane nepromijenjen.Metode¶
- reset(hard: bool = True) None¶
Inicijalizira senzor kamere. Izvodi hardverski reset prebacivanjem RESET signala GPIO prema modulu kamere ako je
hardjednakTrue.hardtreba postaviti na false pri resetiranju pomoćnih senzora kamere koji dijele isti RESET signal GPIO kao primarni modul.
- shutdown(enable: bool) None¶
Stavlja kameru u niži potrošni način rada od stanja mirovanja (ali kamera se mora resetirati pri buđenju).
- sleep(enable: bool) None¶
Stavlja kameru u stanje mirovanja ako je
enableTrue. U suprotnom je budi natrag.
- flush() None¶
Kopira trenutni sadržaj međuspremnika slike u IDE pregled. Pozovite ovo nakon zadnjeg
CSI.snapshotako se skripta završava kako bi IDE prikazao zadnju sličicu.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Snima sliku pomoću kamere i vraća objekt
image.Image.Ako se proslijedi
timei/iliframes, snapshot će blokirati tolikotimemilisekundi i/iliframessnimljenih s kamere. Oba argumenta mogu se koristiti istovremeno. Nakon što prođetimei/iliframes, snapshot će vratitiNone.blockingmože bitiFalseza omogućavanje neblokirajućeg ponašanja koje će uzrokovati da snapshot vratiNonekada sljedeća slika s kamere nije spremna umjesto čekanja.imagemože biti drugi objektimage.Imagekoji se ažurira novom slikom snimljenom s kamere umjesto vraćanja novog objektaimage.Image. Prethodni sadržaj slike prepisuje se dubokom kopijom.Ako je
CSI.auto_rotationomogućen, ova metoda vratit će već rotiraniimage.Image.
- cid() int¶
Vraća ID čipa modula kamere. Usporedite s bilo kojom od
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.FROGEYE2020ilicsi.SOFTCSI.
- readable() bool¶
Vraća
Trueako postoji slika spremna za vraćanje pomoćuCSI.snapshottako da poziv funkcije snapshot neće blokirati.
- pixformat(pixformat: int | None = None) int | None¶
Postavlja format piksela za modul kamere na jedan od
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422ilicsi.JPEG(samo na OV2640/OV5640).Vraća trenutni pixformat ako se pozove bez argumenata.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Postavlja veličinu sličice za modul kamere na jednu od konstanti veličine (npr.
csi.QVGA,csi.VGA,csi.HDitd. — pogledajte odjeljak s konstantama).Alternativno, možete proslijediti prilagođenu veličinu sličice kao
(w, h)n-torku. Kada se pozoveCSI.snapshot, prilagođena veličina sličice procijenit će se prema DMA pravilima. Općenito veličine sličica trebaju biti višekratnik od 8 piksela i/ili 16 bajtova.Vraća trenutnu veličinu sličice ako se pozove bez argumenata.
- framerate(rate: int | None = None) int | None¶
Postavlja brzinu sličica u Hz za modul kamere.
Vraća trenutnu brzinu sličica ako se pozove bez argumenata.
Napomena
CSI.framerateradi tako da odbacuje sličice primljene od modula kamere kako bi brzinu sličica održao na navedenoj brzini ili ispod nje. Prema zadanim postavkama kamera će raditi maksimalnom brzinom sličica. Ako je implementirano za određeni senzor kamere,CSI.framerateće također interno smanjiti brzinu sličica senzora kamere kako bi uštedio energiju i poboljšao kvalitetu slike povećanjem ekspozicije senzora.CSI.frameratemože biti u sukobu sCSI.auto_exposurena nekim kamerama.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Postavlja razlučivost kamere na podpodručje trenutne razlučivosti.
roije(x, y, w, h)n-torka. Možete također proslijediti(w, h)i prozor će biti centriran.Vraća trenutnu
(x, y, w, h)n-torku ako se pozove bez argumenata.
- gainceiling(gainceiling: int) bool¶
Postavlja gornju granicu pojačanja slike kamere na jednu od 2, 4, 8, 16, 32, 64 ili 128.
Vraća
Truepri uspjehu iFalsepri neuspjehu.
- brightness(brightness: int) bool¶
Postavlja svjetlinu slike kamere.
Vraća
Truepri uspjehu iFalsepri neuspjehu.
- contrast(contrast: int) bool¶
Postavlja kontrast slike kamere.
Vraća
Truepri uspjehu iFalsepri neuspjehu.
- saturation(saturation: int) bool¶
Postavlja zasićenost slike kamere.
Vraća
Truepri uspjehu iFalsepri neuspjehu.
- quality(quality: int) bool¶
Postavlja kvalitetu JPEG kompresije slike kamere. 0 - 100.
Vraća
Truepri uspjehu iFalsepri neuspjehu.Napomena
Samo za OV2640/OV5640 kamere.
- colorbar(enable: bool) bool¶
Uključuje (
True) ili isključuje (False) način rada s trakama boja. Prema zadanim postavkama isključeno.Vraća
Truepri uspjehu iFalsepri neuspjehu.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enableuključuje (True) ili isključuje (False) automatsku kontrolu pojačanja. Kamera se pokreće s uključenom automatskom kontrolom pojačanja.Ako je
enablejednakFalse, možete postaviti fiksno pojačanje u decibelima pomoćugain_db.Ako je
enablejednakTrue, možete postaviti maksimalnu gornju granicu pojačanja u decibelima pomoćugain_db_ceilingza algoritam automatske kontrole pojačanja.Napomena
Trebate isključiti i balans bijele boje ako želite pratiti boje.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableuključuje (True) ili isključuje (False) automatsku kontrolu ekspozicije. Kamera se pokreće s uključenom automatskom kontrolom ekspozicije.Ako je
enablejednakFalse, možete postaviti fiksno vrijeme ekspozicije u mikrosekundama pomoćuexposure_us.Napomena
Algoritmi automatske ekspozicije kamere prilično su konzervativni u pogledu toga koliko prilagođavaju vrijednost ekspozicije i općenito će izbjegavati znatnu promjenu vrijednosti ekspozicije. Umjesto toga, oni puno mijenjaju vrijednost pojačanja kako bi se nosili s promjenjivim osvjetljenjem.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enableuključuje (True) ili isključuje (False) automatski balans bijele boje. Kamera se pokreće s uključenim automatskim balansom bijele boje.Ako je
enablejednakFalse, možete postaviti fiksno pojačanje u decibelima za crveni, zeleni i plavi kanal redom pomoćurgb_gain_db.Napomena
Trebate isključiti i kontrolu pojačanja ako želite pratiti boje.
- rgb_gain_db() Tuple[float, float, float]¶
Vraća n-torku
(r, g, b)trenutnih vrijednosti crvenog, zelenog i plavog pojačanja kamere u decibelima.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Postavlja automatsku kalibraciju razine crne (BLC) na kameri.
enableproslijediteTrueiliFalseza uključivanje ili isključivanje BLC-a. Obično ovo uvijek želite uključeno.regsako je onemogućeno, tada možete ručno postaviti vrijednosti BLC registara iz prethodnog pozivaCSI.blc_regs.
- blc_regs() List[int]¶
Vraća BLC registre senzora kao popis cijelih brojeva. Za uporabu s
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Uključuje (
True) ili isključuje (False) način rada s vodoravnim zrcalnim prikazom. Prema zadanim postavkama isključeno.Vraća trenutnu postavku ako se pozove bez argumenata.
- vflip(enable: bool | None = None) bool | None¶
Uključuje (
True) ili isključuje (False) način rada s okomitim preokretom. Prema zadanim postavkama isključeno.Vraća trenutnu postavku ako se pozove bez argumenata.
- transpose(enable: bool | None = None) bool | None¶
Uključuje (
True) ili isključuje (False) način rada s transpozicijom. Prema zadanim postavkama isključeno.vflip=False, hmirror=False, transpose=False -> rotacija od 0 stupnjeva
vflip=True, hmirror=False, transpose=True -> rotacija od 90 stupnjeva
vflip=True, hmirror=True, transpose=False -> rotacija od 180 stupnjeva
vflip=False, hmirror=True, transpose=True -> rotacija od 270 stupnjeva
Vraća trenutnu postavku ako se pozove bez argumenata.
- auto_rotation(enable: bool | None = None) bool | None¶
Uključuje (
True) ili isključuje (False) način rada s automatskom rotacijom. Prema zadanim postavkama isključeno.Vraća trenutnu postavku ako se pozove bez argumenata.
Napomena
Ova metoda radi samo kada OpenMV Cam ima instaliran
imui automatski se omogućuje.
- framebuffers(count: int | None = None) int | None¶
Postavlja broj međuspremnika slike koji se koriste za primanje podataka slike. Prema zadanim postavkama OpenMV Cam će pokušati alocirati maksimalan broj međuspremnika slike koji može. Ponovna alokacija događa se svaki put kada se pozovu
CSI.pixformat,CSI.framesizeiliCSI.window.countod 1 (jedan međuspremnik), 2 (dvostruki međuspremnik) ili 3 (trostruki međuspremnik) odabire odgovarajući način snimanja. Proslijedite 4 ili više da upravljački program postavite u video FIFO način rada gdje secountmeđuspremnika stavlja u red — korisno za snimanje videa na SD karticu. Pri ispuštanju sličice svi međuspremnici slike osim aktivnog se brišu paCSI.snapshotuvijek vraća nedavnu sličicu.Vraća trenutni broj ako se pozove bez argumenata.
- special_effect(effect: int) bool¶
Postavlja poseban digitalni efekt (jedan od
csi.NORMALilicsi.NEGATIVE).Vraća
Truepri uspjehu iFalsepri neuspjehu.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrueza omogućavanje,Falseza onemogućavanje.radicjelobrojni radijus piksela za korekciju.coefsnaga korekcije.Vraća
Truepri uspjehu iFalsepri neuspjehu.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Registrira povratni poziv
cbkoji se izvršava (u kontekstu prekida) svaki put kada modul kamere generira novu sličicu (ali prije nego što je sličica primljena).cbprima jedan argument i prosljeđuje mu se trenutno stanje vsync pina nakon promjene.Vraća registrirani povratni poziv ako se pozove bez argumenata. Proslijedite bilo što što nije pozivljivo da očistite povratni poziv.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Registrira povratni poziv
cbkoji se izvršava (u kontekstu prekida) svaki put kada modul kamere generira novu sličicu i sličica je spremna za čitanje putemCSI.snapshot.cbne prima argumente. Koristite ovo za zakazivanje čitanja sličice kasnije pomoćumicropython.schedule().Vraća registrirani povratni poziv ako se pozove bez argumenata. Proslijedite bilo što što nije pozivljivo da očistite povratni poziv.
- ioctl(request: int, *args) Any¶
Izvršava zahtjev specifičan za senzor.
requestje jedna odIOCTL_*konstanti; preostali pozicijski argumenti i povratna vrijednost ovise o zahtjevu. Podržani zahtjevi grupirani su po obitelji senzora ispod.Općenito (bilo koji senzor):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Postavlja prozor očitavanja senzora. Manji prozor povećava brzinu sličica na račun vidnog polja.
ioctl(IOCTL_GET_READOUT_WINDOW)Vraća trenutni prozor očitavanja kao
(x, y, w, h)n-torku.ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Omogućuje (
True) ili onemogućuje (False) okidani način rada na MT9V034.ioctl(IOCTL_GET_TRIGGERED_MODE)Vraća trenutno stanje okidanog načina rada kao
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Kada je
True, upućujeframesize()da optimizira za vidno polje umjesto za brzinu sličica.ioctl(IOCTL_GET_FOV_WIDE)Vraća trenutno stanje FOV-wide kao
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Omogućuje (
True) ili onemogućuje (False) senzorov „noćni način rada” za slabo osvjetljenje. Samo OV7725 i OV5640.ioctl(IOCTL_GET_NIGHT_MODE)Vraća trenutno stanje noćnog načina rada kao
bool.ioctl(IOCTL_GET_RGB_STATS)Vraća 4-torku sirove statistike RGB kanala
(r, gb, gr, b)očitane iz senzora (obično se koristi za podešavanje balansa bijele boje).
OV5640 FPC – automatsko fokusiranje:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Pokreće prolaz automatskog fokusiranja na OV5640 FPC modulu.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Pauzira prolaz automatskog fokusiranja u tijeku.
ioctl(IOCTL_RESET_AUTO_FOCUS)Resetira položaj automatskog fokusiranja na zadani.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Blokira dok se trenutni prolaz automatskog fokusiranja ne završi.
timeout_msima zadanu vrijednost 5000 ako se izostavi.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Vraća širinu Lepton slike u pikselima.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Vraća visinu Lepton slike u pikselima.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Vraća Leptonov tip (radiometrijski ili ne) kao int.
ioctl(IOCTL_LEPTON_GET_REFRESH)Vraća Leptonovu brzinu osvježavanja u Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Vraća Leptonovu ADC razlučivost u bitovima.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Pokreće naredbu FLIR Lepton SDK-a.
cmdje 16-bitni id naredbe definiran SDK-om.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Zapisuje atribut Lepton SDK-a.
attr_idje 16-bitni id atributa;payloadjebytes/bytearrayčija duljina mora biti višekratnik 16 bitova.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Čita atribut Lepton SDK-a.
attr_idje 16-bitni id atributa;wordsje broj 16-bitnih riječi za čitanje. Vraćabytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Vraća temperaturu Leptonovog niza žarišne ravnine u stupnjevima Celzija.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Vraća Leptonovu pomoćnu temperaturu u stupnjevima Celzija.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Prebacuje Lepton između AGC i izravnog temperaturnog izlaza.
measurement_enabled=Trueomogućuje izravni temperaturni izlaz. Opcijska zastavicahigh_temp_enabledodabire raspon visokih temperatura.ioctl(IOCTL_LEPTON_GET_MODE)Vraća 2-torku
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Postavlja temperaturni raspon mapiran na
0..255kada je omogućen način mjerenja.ioctl(IOCTL_LEPTON_GET_RANGE)Vraća trenutni
(min_celsius, max_celsius)raspon.
Himax HM01B0 – detekcija pokreta:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Omogućuje (
True) ili onemogućuje (False) blok detekcije pokreta na senzoru HM01B0.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Postavlja prozor detekcije pokreta na HM01B0.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Postavlja prag detekcije pokreta (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Briše zasun prekida detekcije pokreta.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Omogućuje (
True) ili onemogućuje (False) interni oscilator HM01B0.
Prophesee GENX320 – event senzor:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Primjenjuje unaprijed postavljene vrijednosti pristranosti.
presetje jedna odGENX320_BIASES_*konstanti.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Postavlja jednu vrijednost pristranosti.
biasje jedna odGENX320_BIAS_*konstanti;valueje cjelobrojna postavka.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Konfigurira filtar protiv treperenja.
enableje bool; opcijski argumenti frekvencije postavljaju propusni pojas filtra.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Konfigurira filtar prostorno-vremenskog kontrasta.
modeje jedna odGENX320_STC_*konstanti; do dva daljnja argumenta specifična su za način rada.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Prebacuje senzor između načina rada sa sličicama i s događajima.
modeje jedna odGENX320_MODE_*konstanti. Za način rada s događajima,evt_resje duljina osi redaka međuspremnika događaja proslijeđenog uIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Čita događaje u
buf,uint16ndarrayoblika(EVT_res, 6)gdje jeEVT_respotencija dvojke između 1024 i 65536. Stupci su:[0]– tip događaja (PIX_OFF_EVENT/PIX_ON_EVENT/ okidač).[1]– sekunde.[2]– milisekunde.[3]– mikrosekunde.[4]–xkoordinata.[5]–ykoordinata.
Vraća broj zapisanih događaja.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Vraća
image.Imagekoji sadrži sirovu sličicu događaja iz GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Isključuje piksele čiji je šum više od
sigmastandardnih devijacija od normalne distribucije.iterationsje cjelobrojni broj prolaza kalibracije. Vraća broj onemogućenih piksela.
- color_palette(palette: int | None = None) int | None¶
Postavlja paletu boja koja se koristi za stvari poput pretvorbe FLIR Lepton sivih tonova u RGB565 ili vizualizacije GENX320 događaja. Jedna od
image.PALETTE_RAINBOW,image.PALETTE_IRONBOWi (kada je podržano)image.PALETTE_DEPTH,image.PALETTE_EVT_DARKiliimage.PALETTE_EVT_LIGHT.Vraća trenutnu postavku ako se pozove bez argumenata.
Funkcije¶
Konstante¶
- csi.BINARY: int¶
BINARY (bitmap) format piksela. Svaki piksel je 1-bitni. Koristan za spremanje maski; može se koristiti s
image.Image().
- csi.RGB565: int¶
RGB565 format piksela. Svaki piksel je 16-bitni (5 bitova crvene, 6 bitova zelene, 5 bitova plave).
- csi.YUV422: int¶
YUV422 format piksela. Svaki piksel pohranjen je kao 8-bitna Y vrijednost sivog tona iza koje slijede izmjenične 8-bitne U/V vrijednosti boje dijeljene između dvije Y vrijednosti (Y1, U, Y2, V, …). Samo neke metode obrade slike rade s YUV422.
- csi.JPEG: int¶
JPEG način rada. Modul kamere izlaže komprimirane JPEG slike. Koristite
CSI.qualityza kontrolu JPEG kvalitete. Radi samo za OV2640/OV5640 kamere.
- csi.NORMAL: int¶
Normalni način rada za
CSI.special_effect.
- csi.NEGATIVE: int¶
Negativni način rada za
CSI.special_effect.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Dohvaća stanje okidanog načina rada za MT9V034. Pogledajte
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Omogućuje
CSI.framesizeda optimizira za vidno polje umjesto za FPS. PogledajteCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Vraća optimizira li
CSI.framesizeza vidno polje umjesto za FPS. PogledajteCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Pokreće automatsko fokusiranje na OV5640 FPC modulu kamere. Pogledajte
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Pauzira automatsko fokusiranje (tijekom rada) za OV5640 FPC modul kamere. Pogledajte
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Resetira automatsko fokusiranje na zadano za OV5640 FPC modul kamere. Pogledajte
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Čeka da automatsko fokusiranje završi na OV5640 FPC modulu kamere. Pogledajte
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Uključuje ili isključuje noćni način rada. Smanjuje brzinu sličica radi dinamičkog povećanja ekspozicije. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Vraća širinu razlučivosti FLIR Lepton slike u pikselima. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Vraća visinu razlučivosti FLIR Lepton slike u pikselima. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
Vraća FLIR Lepton tip (radiometrijski ili ne). Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Vraća FLIR Lepton brzinu osvježavanja u Hz. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Vraća FLIR Lepton ADC razlučivost u bitovima. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_RUN_COMMAND: int¶
Izvršava 16-bitnu naredbu iz FLIR Lepton SDK-a. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
Postavlja FLIR Lepton atribut iz FLIR Lepton SDK-a. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
Dohvaća FLIR Lepton atribut iz FLIR Lepton SDK-a. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Dohvaća FLIR Lepton FPA temperaturu u Celzijima. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Dohvaća FLIR Lepton AUX temperaturu u Celzijima. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Postavlja FLIR Lepton upravljački program u način rada gdje je svaki piksel temperaturna vrijednost. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Vraća je li način mjerenja omogućen za FLIR Lepton senzor. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Postavlja temperaturni raspon mapiran na vrijednosti piksela u načinu mjerenja. Pogledajte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RANGE: int¶
Vraća temperaturni raspon korišten za način mjerenja. Pogledajte
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_ENABLE: int¶
Kontrolira prekid detekcije pokreta na HM01B0. Pogledajte
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_THRESHOLD: int¶
Postavlja prag detekcije pokreta na HM01B0. Pogledajte
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Postavlja pristranosti GENX320 senzora na jednu od
GENX320_BIASES_*unaprijed postavljenih vrijednosti. PogledajteCSI.ioctl. NakonCSI.resetupravljački program primjenjujecsi.GENX320_BIASES_LOW_NOISE, a necsi.GENX320_BIASES_DEFAULT— koristite ovaj ioctl za prebacivanje na drugačiju unaprijed postavljenu vrijednost kada aplikacija treba veću osjetljivost ili propusnost.
- csi.GENX320_BIASES_DEFAULT: int¶
Zadane vrijednosti iz GenX320 podatkovne specifikacije — uravnotežena osjetljivost, šum i propusnost za općenite scene.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Podešeno za uvjete slabog osvjetljenja — oba kontrastna praga su olabavljena radi veće osjetljivosti, FO snižen, HPF onemogućen tako da se spore promjene svjetline i dalje registriraju.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Podešeno za praćenje LED dioda visokog kontrasta koje trepere (aktivni markeri) — kontrastni pragovi podignuti tako da samo oštri prijelazi okidaju, FO i HPF podignuti visoko za maksimiziranje propusnosti i odbacivanje sporog ambijentalnog odmaka, REFR=0 tako da se svaki rub treptaja snima.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Zadana vrijednost upravljačkog programa — niža osjetljivost od
DEFAULT(podignuti kontrastni pragovi) i niži FO za manju aktivnost pozadinskog šuma. Najbolje za statične ili spore scene gdje bi lažni događaji prevladali.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Podešeno za scene brzog pokreta — viši FO za širu propusnost piksela, viši HPF za odbacivanje sporih promjena, viši REFR za duže mrtvo vrijeme nakon svakog događaja tako da se očitavanje ne zasiti.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Postavlja jednu pristranost GENX320 senzora na DAC vrijednost. Proslijedite
GENX320_BIAS_*konstantu (csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFilicsi.GENX320_BIAS_REFR) i cjelobrojnu DAC vrijednost. Svaka pristranost je neovisna — pozivajte ovaj ioctl više puta da podesite samo pristranosti koje trebate nakon primjene unaprijed postavljene vrijednosti. PogledajteCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Kontrastni prag negativnog komparatora — kontrolira koliko se piksel mora zatamniti prije nego što se okine
csi.PIX_OFF_EVENT. Niža vrijednost = veća osjetljivost (više događaja).
- csi.GENX320_BIAS_DIFF_ON: int¶
Kontrastni prag pozitivnog komparatora — kontrolira koliko se piksel mora posvijetliti prije nego što se okine
csi.PIX_ON_EVENT. Niža vrijednost = veća osjetljivost (više događaja).
- csi.GENX320_BIAS_FO: int¶
Niskopropusna granična frekvencija piksela — balansira propusnost piksela (brzina/kašnjenje) naspram aktivnosti pozadinskog šuma. Viša vrijednost = brži odziv piksela, više šuma.
- csi.GENX320_BIAS_HPF: int¶
Visokopropusna granična frekvencija piksela — odbacuje spore promjene svjetline. Viša vrijednost = sporije promjene se filtriraju (samo brzi prijelazi se registriraju).
- csi.GENX320_BIAS_REFR: int¶
Refraktorni period piksela — mrtvo vrijeme nakon što piksel emitira događaj tijekom kojeg ne može ponovno okinuti. Viša vrijednost = duže mrtvo vrijeme, manje događaja iz zauzetog piksela.
- csi.IOCTL_GENX320_SET_AFK: int¶
Postavlja GENX320 filtar protiv treperenja (AFK), koji odbacuje događaje iz piksela koji se prebacuju na periodičnom frekvencijskom pojasu (fluorescentno osvjetljenje, LED-pokretani zasloni itd.). Proslijedite
enable(1 za omogućavanje, 0 za onemogućavanje) i, prilikom omogućavanja, rubove pojasa u hercima:(enable, freq_low_hz, freq_high_hz). PogledajteCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Postavlja način rada GENX320 filtra prostorno-vremenskog kontrasta (STC). Proslijedite
GENX320_STC_*konstantu (csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) iza koje slijedi prag(ovi) koji način rada zahtijeva (u milisekundama). PogledajteCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Zadržava drugi događaj rafala; odbacuje prvi događaj i sve kasnije događaje. Prima jedan parametar,
stc_thresholdu milisekundama — događaji unutar tog prozora od prethodnog događaja na istom pikselu smatraju se dijelom istog rafala.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Zadržava prvi događaj rafala; odbacuje naknadne događaje na istom pikselu dok ne protekne
trail_threshold. Prima jedan parametar,trail_thresholdu milisekundama.
- csi.GENX320_STC_TRAIL: int¶
Zadržava prvi događaj rafala plus naknadne rubove — kombinira
csi.GENX320_STC_ONLYicsi.GENX320_STC_TRAIL_ONLY. Prima dva parametra,stc_thresholditrail_threshold(oba ms); senzor zahtijeva da ta dva ostanu unutar otprilike omjera 13:1.
- csi.IOCTL_GENX320_SET_MODE: int¶
Postavlja GENX320 radni način. Proslijedite
csi.GENX320_MODE_HISTOza histogram događaja na čipu (kamera se ponaša kao obična kamera sivih tonova pri konfiguriranoj brzini sličica) ilicsi.GENX320_MODE_EVENTiza čega slijedi duljina osi redakandarraydogađaja (potencija dvojke između 1024 i 65536) za sirovi tok događaja. PogledajteCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Histogramski način rada — događaji se akumuliraju na čipu u spremnike po pikselu i izvještavaju se kao 320x320 sličica sivih tonova pri konfiguriranoj brzini (~20-350 FPS). Kamera izgleda kao obična kamera, pa sve standardne rutine obrade slike rade izravno.
- csi.GENX320_MODE_EVENT: int¶
Način rada s događajima — zaobilazi histogram na čipu i tokom šalje sirove događaje u numpy
ndarrays mikrosekundnim vremenskim oznakama, za aplikacije koje trebaju potpunu vremensku razlučivost umjesto unaprijed razvrstane sličice.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Čita sirove događaje u uint16
ndarrayoblika(EVT_res, 6)(sEVT_reskoji odgovara veličini međuspremnika proslijeđenoj ucsi.IOCTL_GENX320_SET_MODE). Stupci su[0]tip događaja (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]vremenska oznaka u sekundama,[2]milisekunde,[3]mikrosekunde,[4]X koordinata (0-319),[5]Y koordinata (0-319). Vraća broj događaja zapisanih u međuspremnik, ostavljajući starije retke iza tog broja nedirnutima. PogledajteCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Automatski onemogućuje vruće piksele — piksele koji lažno okidaju čak i na statičnoj sceni. Upravljački program gradi 320x320 brojač pogodaka po pikselu, izračunava srednju vrijednost i standardnu devijaciju te onemogućuje svaki piksel čiji broj prelazi
mean + sigma * stddev. Proslijedite proračun broja događaja (događaji za zbrajanje prije izračuna statistike — više = pouzdanija procjena, sporije; ~10000 je dobra zadana vrijednost) i sigma float (niže = agresivnije, ~0.5 zadano). Vraća broj onemogućenih piksela. Prvo usmjerite kameru na statičnu scenu kako se događaji pokrenuti pokretom ne bi računali protiv piksela koji su zapravo u redu. PogledajteCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Vraća sirovu sličicu događaja
image.Imageiz GENX320, s događajima i dalje u izvornom pakiranom kodiranju čipa — korisno ako želite proslijediti sirovi tok na računalo za izvanmrežno dekodiranje umjesto obrade na kameri. PogledajteCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
GENX320 tip događaja (stupac
[0]) — piksel je detektirao smanjenje svjetline (prijeđen je prag negativnog kontrasta). Stupci[4]/[5]nose X/Y piksela.
- csi.PIX_ON_EVENT: int¶
GENX320 tip događaja (stupac
[0]) — piksel je detektirao povećanje svjetline (prijeđen je prag pozitivnog kontrasta). Stupci[4]/[5]nose X/Y piksela.
- csi.RST_TRIGGER_RISING: int¶
GENX320 tip događaja (stupac
[0]) — okidač resetiranja piksela, rastući rub. X/Y se ne koriste. Trenutno ga ugrađeni program ne generira.
- csi.RST_TRIGGER_FALLING: int¶
GENX320 tip događaja (stupac
[0]) — okidač resetiranja piksela, padajući rub. X/Y se ne koriste. Trenutno ga ugrađeni program ne generira.