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 cid poput csi.LEPTON za odabir FLIR Lepton senzorskog modula. Ako je cid jednak -1, odabire se primarni senzor (obično modul kamere u boji na pločama s više senzora).

Ako je delays jednak False, 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 pozivu CSI.snapshot. Onemogućavanje kašnjenja omogućuje vam grupiranje izmjena i primjenu jednog kašnjenja na kraju prije poziva CSI.snapshot.

Ako je fflush jednak False, tada je automatsko pražnjenje međuspremnika slike spomenuto u CSI.framebuffers onemogućeno. Time se uklanja svako vremensko ograničenje za sličice u fifo redu međuspremnika slike.

stream odabire je li ovaj CSI izvor toka koji se šalje u IDE. Ako je None (zadano), CSI postaje izvor toka samo ako je primarni (ne-pomoćni) senzor. Proslijedite True da 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 hard jednak True. hard treba 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 enable True. U suprotnom je budi natrag.

flush() None#

Kopira trenutni sadržaj međuspremnika slike u IDE pregled. Pozovite ovo nakon zadnjeg CSI.snapshot ako 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 time i/ili frames, snapshot će blokirati toliko time milisekundi i/ili frames snimljenih s kamere. Oba argumenta mogu se koristiti istovremeno. Nakon što prođe time i/ili frames, snapshot će vratiti None.

blocking može biti False za omogućavanje neblokirajućeg ponašanja koje će uzrokovati da snapshot vrati None kada sljedeća slika s kamere nije spremna umjesto čekanja.

image može biti drugi objekt image.Image koji se ažurira novom slikom snimljenom s kamere umjesto vraćanja novog objekta image.Image. Prethodni sadržaj slike prepisuje se dubokom kopijom.

Ako je CSI.auto_rotation omogućen, ova metoda vratit će već rotirani image.Image.

width() int#

Vraća širinu razlučivosti senzora.

height() int#

Vraća visinu razlučivosti senzora.

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.FROGEYE2020 ili csi.SOFTCSI.

readable() bool#

Vraća True ako postoji slika spremna za vraćanje pomoću CSI.snapshot tako 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.YUV422 ili csi.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.HD itd. — pogledajte odjeljak s konstantama).

Alternativno, možete proslijediti prilagođenu veličinu sličice kao (w, h) n-torku. Kada se pozove CSI.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.framerate radi 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.framerate može biti u sukobu s CSI.auto_exposure na 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. roi je (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 True pri uspjehu i False pri neuspjehu.

brightness(brightness: int) bool#

Postavlja svjetlinu slike kamere.

Vraća True pri uspjehu i False pri neuspjehu.

contrast(contrast: int) bool#

Postavlja kontrast slike kamere.

Vraća True pri uspjehu i False pri neuspjehu.

saturation(saturation: int) bool#

Postavlja zasićenost slike kamere.

Vraća True pri uspjehu i False pri neuspjehu.

quality(quality: int) bool#

Postavlja kvalitetu JPEG kompresije slike kamere. 0 - 100.

Vraća True pri uspjehu i False pri 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 True pri uspjehu i False pri neuspjehu.

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

enable uključuje (True) ili isključuje (False) automatsku kontrolu pojačanja. Kamera se pokreće s uključenom automatskom kontrolom pojačanja.

Ako je enable jednak False, možete postaviti fiksno pojačanje u decibelima pomoću gain_db.

Ako je enable jednak True, možete postaviti maksimalnu gornju granicu pojačanja u decibelima pomoću gain_db_ceiling za algoritam automatske kontrole pojačanja.

Napomena

Trebate isključiti i balans bijele boje ako želite pratiti boje.

gain_db() float#

Vraća trenutnu vrijednost pojačanja kamere u decibelima.

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

enable uključuje (True) ili isključuje (False) automatsku kontrolu ekspozicije. Kamera se pokreće s uključenom automatskom kontrolom ekspozicije.

Ako je enable jednak False, možete postaviti fiksno vrijeme ekspozicije u mikrosekundama pomoću exposure_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.

exposure_us() int#

Vraća trenutnu vrijednost ekspozicije kamere u mikrosekundama.

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

enable uključuje (True) ili isključuje (False) automatski balans bijele boje. Kamera se pokreće s uključenim automatskim balansom bijele boje.

Ako je enable jednak False, možete postaviti fiksno pojačanje u decibelima za crveni, zeleni i plavi kanal redom pomoću rgb_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.

enable proslijedite True ili False za uključivanje ili isključivanje BLC-a. Obično ovo uvijek želite uključeno.

regs ako je onemogućeno, tada možete ručno postaviti vrijednosti BLC registara iz prethodnog poziva CSI.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 imu i 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.framesize ili CSI.window.

count od 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 se count međ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 pa CSI.snapshot uvijek 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.NORMAL ili csi.NEGATIVE).

Vraća True pri uspjehu i False pri neuspjehu.

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

enable True za omogućavanje, False za onemogućavanje. radi cjelobrojni radijus piksela za korekciju. coef snaga korekcije.

Vraća True pri uspjehu i False pri neuspjehu.

vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None#

Registrira povratni poziv cb koji se izvršava (u kontekstu prekida) svaki put kada modul kamere generira novu sličicu (ali prije nego što je sličica primljena).

cb prima 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 cb koji se izvršava (u kontekstu prekida) svaki put kada modul kamere generira novu sličicu i sličica je spremna za čitanje putem CSI.snapshot.

cb ne prima argumente. Koristite ovo za zakazivanje čitanja sličice kasnije pomoću micropython.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. request je jedna od IOCTL_* 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ćuje framesize() 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_ms ima 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. cmd je 16-bitni id naredbe definiran SDK-om.

ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)

Zapisuje atribut Lepton SDK-a. attr_id je 16-bitni id atributa; payload je bytes/bytearray čija duljina mora biti višekratnik 16 bitova.

ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)

Čita atribut Lepton SDK-a. attr_id je 16-bitni id atributa; words je broj 16-bitnih riječi za čitanje. Vraća bytearray.

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=True omogućuje izravni temperaturni izlaz. Opcijska zastavica high_temp_enabled odabire 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..255 kada 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 (0255).

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. preset je jedna od GENX320_BIASES_* konstanti.

ioctl(IOCTL_GENX320_SET_BIAS, bias, value)

Postavlja jednu vrijednost pristranosti. bias je jedna od GENX320_BIAS_* konstanti; value je cjelobrojna postavka.

ioctl(IOCTL_GENX320_SET_AFK, enable)

ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)

Konfigurira filtar protiv treperenja. enable je 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. mode je jedna od GENX320_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. mode je jedna od GENX320_MODE_* konstanti. Za način rada s događajima, evt_res je duljina osi redaka međuspremnika događaja proslijeđenog u IOCTL_GENX320_READ_EVENTS.

ioctl(IOCTL_GENX320_READ_EVENTS, buf)

Čita događaje u buf, uint16 ndarray oblika (EVT_res, 6) gdje je EVT_res potencija 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]x koordinata.

  • [5]y koordinata.

Vraća broj zapisanih događaja.

ioctl(IOCTL_GENX320_READ_EVENTS_RAW)

Vraća image.Image koji sadrži sirovu sličicu događaja iz GENX320.

ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)

Isključuje piksele čiji je šum više od sigma standardnih devijacija od normalne distribucije. iterations je 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_IRONBOW i (kada je podržano) image.PALETTE_DEPTH, image.PALETTE_EVT_DARK ili image.PALETTE_EVT_LIGHT.

Vraća trenutnu postavku ako se pozove bez argumenata.

__write_reg(address: int, value: int) None#

Zapisuje value u registar kamere na address.

Napomena

Pogledajte podatkovnu specifikaciju kamere za informacije o registrima.

__read_reg(address: int) int#

Čita registar kamere na address.

Napomena

Pogledajte podatkovnu specifikaciju kamere za informacije o registrima.

Funkcije#

csi.devices() List[int]#

Vraća popis otkrivenih ID-ova čipova senzora.

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

GRAYSCALE format piksela (Y iz YUV422). Svaki piksel je 8-bitni.

csi.RGB565: int#

RGB565 format piksela. Svaki piksel je 16-bitni (5 bitova crvene, 6 bitova zelene, 5 bitova plave).

csi.BAYER: int#

RAW BAYER format piksela slike.

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.quality za kontrolu JPEG kvalitete. Radi samo za OV2640/OV5640 kamere.

csi.OV2640: int#

CSI.cid vraća ovo za OV2640 kameru.

csi.OV5640: int#

CSI.cid vraća ovo za OV5640 kameru.

csi.OV7670: int#

CSI.cid vraća ovo za OV7670 kameru.

csi.OV7690: int#

CSI.cid vraća ovo za OV7690 kameru.

csi.OV7725: int#

CSI.cid vraća ovo za OV7725 kameru.

csi.OV9650: int#

CSI.cid vraća ovo za OV9650 kameru.

csi.MT9V022: int#

CSI.cid vraća ovo za MT9V022 kameru.

csi.MT9V024: int#

CSI.cid vraća ovo za MT9V024 kameru.

csi.MT9V032: int#

CSI.cid vraća ovo za MT9V032 kameru.

csi.MT9V034: int#

CSI.cid vraća ovo za MT9V034 kameru.

csi.MT9M114: int#

CSI.cid vraća ovo za MT9M114 kameru.

csi.BOSON320: int#

CSI.cid vraća ovo za BOSON 320x256 kameru.

csi.BOSON640: int#

CSI.cid vraća ovo za BOSON 640x512 kameru.

csi.LEPTON: int#

CSI.cid vraća ovo za LEPTON1/2/3 kamere.

csi.HM01B0: int#

CSI.cid vraća ovo za HM01B0 kameru.

csi.HM0360: int#

CSI.cid vraća ovo za HM0360 kameru.

csi.GC2145: int#

CSI.cid vraća ovo za GC2145 kameru.

csi.GENX320ES: int#

CSI.cid vraća ovo za GENX320 (inženjerski uzorak) kameru.

csi.GENX320: int#

CSI.cid vraća ovo za GENX320 kameru.

csi.PAG7920: int#

CSI.cid vraća ovo za PAG7920 kameru.

csi.PAG7936: int#

CSI.cid vraća ovo za PAG7936 kameru.

csi.PAJ6100: int#

CSI.cid vraća ovo za PAJ6100 kameru.

csi.FROGEYE2020: int#

CSI.cid vraća ovo za FROGEYE2020 kameru.

csi.SOFTCSI: int#

CSI.cid vraća ovo za softversku CSI kameru.

csi.NORMAL: int#

Normalni način rada za CSI.special_effect.

csi.NEGATIVE: int#

Negativni način rada za CSI.special_effect.

csi.QCIF: int#

Razlučivost 176x144 za senzor kamere.

csi.CIF: int#

Razlučivost 352x288 za senzor kamere.

csi.QSIF: int#

Razlučivost 176x120 za senzor kamere.

csi.SIF: int#

Razlučivost 352x240 za senzor kamere.

csi.QQQVGA: int#

Razlučivost 80x60 za senzor kamere.

csi.QQVGA: int#

Razlučivost 160x120 za senzor kamere.

csi.QVGA: int#

Razlučivost 320x240 za senzor kamere.

csi.VGA: int#

Razlučivost 640x480 za senzor kamere.

csi.HQVGA: int#

Razlučivost 240x160 za senzor kamere.

csi.HVGA: int#

Razlučivost 480x320 za senzor kamere.

csi.WVGA: int#

Razlučivost 720x480 za MT9V034 senzor kamere.

csi.WVGA2: int#

Razlučivost 752x480 za MT9V034 senzor kamere.

csi.SVGA: int#

Razlučivost 800x600 za senzor kamere.

csi.XGA: int#

Razlučivost 1024x768 za senzor kamere.

csi.WXGA: int#

Razlučivost 1280x768 za MT9M114 senzor kamere.

csi.SXGA: int#

Razlučivost 1280x1024 za senzor kamere. Radi samo za OV2640/OV5640 kamere.

csi.SXGAM: int#

Razlučivost 1280x960 za MT9M114 senzor kamere.

csi.UXGA: int#

Razlučivost 1600x1200 za senzor kamere. Radi samo za OV2640/OV5640 kamere.

csi.HD: int#

Razlučivost 1280x720 za senzor kamere.

csi.FHD: int#

Razlučivost 1920x1080 za senzor kamere. Radi samo za OV5640 kameru.

csi.QHD: int#

Razlučivost 2560x1440 za senzor kamere. Radi samo za OV5640 kameru.

csi.QXGA: int#

Razlučivost 2048x1536 za senzor kamere. Radi samo za OV5640 kameru.

csi.WQXGA: int#

Razlučivost 2560x1600 za senzor kamere. Radi samo za OV5640 kameru.

csi.WQXGA2: int#

Razlučivost 2592x1944 za senzor kamere. Radi samo za OV5640 kameru.

csi.IOCTL_SET_READOUT_WINDOW: int#

Postavlja prozor očitavanja. Pogledajte CSI.ioctl.

csi.IOCTL_GET_READOUT_WINDOW: int#

Dohvaća prozor očitavanja. Pogledajte CSI.ioctl.

csi.IOCTL_SET_TRIGGERED_MODE: int#

Postavlja okidani način rada za MT9V034. Pogledajte CSI.ioctl.

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.framesize da optimizira za vidno polje umjesto za FPS. Pogledajte CSI.ioctl.

csi.IOCTL_GET_FOV_WIDE: int#

Vraća optimizira li CSI.framesize za vidno polje umjesto za FPS. Pogledajte CSI.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_GET_NIGHT_MODE: int#

Vraća je li noćni način rada omogućen. 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_WINDOW: int#

Postavlja prozor detekcije pokreta na HM01B0. Pogledajte CSI.ioctl.

csi.IOCTL_HIMAX_MD_THRESHOLD: int#

Postavlja prag detekcije pokreta na HM01B0. Pogledajte CSI.ioctl.

csi.IOCTL_HIMAX_MD_CLEAR: int#

Briše prekid detekcije pokreta na HM01B0. Pogledajte CSI.ioctl.

csi.IOCTL_HIMAX_OSC_ENABLE: int#

Kontrolira interni oscilator na HM01B0. Pogledajte CSI.ioctl.

csi.IOCTL_GET_RGB_STATS: int#

Vraća RGB statistiku iz senzora kamere. Pogledajte CSI.ioctl.

csi.IOCTL_GENX320_SET_BIASES: int#

Postavlja pristranosti GENX320 senzora na jednu od GENX320_BIASES_* unaprijed postavljenih vrijednosti. Pogledajte CSI.ioctl. Nakon CSI.reset upravljački program primjenjuje csi.GENX320_BIASES_LOW_NOISE, a ne csi.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_HPF ili csi.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. Pogledajte CSI.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). Pogledajte CSI.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). Pogledajte CSI.ioctl.

csi.GENX320_STC_DISABLE: int#

Onemogućuje GENX320 STC/trail filtar — svaki događaj prolazi.

csi.GENX320_STC_ONLY: int#

Zadržava drugi događaj rafala; odbacuje prvi događaj i sve kasnije događaje. Prima jedan parametar, stc_threshold u 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_threshold u milisekundama.

csi.GENX320_STC_TRAIL: int#

Zadržava prvi događaj rafala plus naknadne rubove — kombinira csi.GENX320_STC_ONLY i csi.GENX320_STC_TRAIL_ONLY. Prima dva parametra, stc_threshold i trail_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_HISTO za histogram događaja na čipu (kamera se ponaša kao obična kamera sivih tonova pri konfiguriranoj brzini sličica) ili csi.GENX320_MODE_EVENT iza čega slijedi duljina osi redaka ndarray događaja (potencija dvojke između 1024 i 65536) za sirovi tok događaja. Pogledajte CSI.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 ndarray s 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 ndarray oblika (EVT_res, 6) (s EVT_res koji odgovara veličini međuspremnika proslijeđenoj u csi.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. Pogledajte CSI.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. Pogledajte CSI.ioctl.

csi.IOCTL_GENX320_READ_EVENTS_RAW: int#

Vraća sirovu sličicu događaja image.Image iz 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. Pogledajte CSI.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.

csi.EXT_TRIGGER_RISING: int#

GENX320 tip događaja (stupac [0]) — senzorov vanjski okidački pin vidio je rastući rub. Vanjski okidački ulaz GENX320 ožičen je na liniju sinkronizacije sličica kamere, također usmjerenu na P10 na procesoru i na pin zaglavlje. X/Y se ne koriste.

csi.EXT_TRIGGER_FALLING: int#

GENX320 tip događaja (stupac [0]) — senzorov vanjski okidački pin vidio je padajući rub. Vanjski okidački ulaz GENX320 ožičen je na liniju sinkronizacije sličica kamere, također usmjerenu na P10 na procesoru i na pin zaglavlje. X/Y se ne koriste.