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.