csi — sensori camera¶
Il modulo csi è l’interfaccia moderna e orientata agli oggetti ai sensori camera di una OpenMV Cam. Ogni sensore fisico è rappresentato da un’istanza CSI, quindi le schede imager multispettrali che abbinano un sensore a colori a un sensore termico o a eventi possono pilotarli in modo indipendente passando un cid diverso al costruttore. Le cam con un singolo sensore istanziano semplicemente una sola CSI.
Un oggetto CSI possiede l’intera configurazione del sensore – formato dei pixel, framesize / finestra, esposizione / guadagno / bilanciamento del bianco, mirror e flip hardware, pattern di test a barre di colore, clock del frame rate, ROI per l’esposizione automatica e comandi ioctl specifici del chip. I frame vengono catturati con CSI.snapshot(), che restituisce un image.Image basato sul frame buffer.
Questo modulo sostituisce il vecchio modulo sensor (che esponeva le stesse funzionalità come funzioni a livello di modulo legate a un singolo sensore nascosto). Il codice nuovo dovrebbe usare CSI.
Esempio di utilizzo:
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()
Utilizzo con asyncio¶
Il ciclo bloccante CSI.snapshot() mostrato sopra non coopera con l’event loop di asyncio – mentre snapshot è in attesa del frame successivo, ogni altra coroutine del programma è congelata. Per far convivere un ciclo di cattura con altro lavoro concorrente (un client UART, un osservatore di pulsanti, un task di rete) avvolgi CSI in un piccolo adattatore che trasforma snapshot in una coroutine compatibile con await, eseguendo il polling di snapshot(blocking=False) e cedendo il controllo all’event loop tra un controllo e l’altro:
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__ inoltra ogni altro attributo (reset, pixformat, framesize, le manopole del sensore) alla CSI sottostante, così il wrapper è un sostituto drop-in. La prima chiamata non bloccante avvia anche la cattura DMA della camera se non era già in esecuzione, quindi non serve alcun bootstrap aggiuntivo.
Un ciclo di cattura si inserisce quindi in un programma asyncio più grande come una coroutine qualsiasi:
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())
L’impostazione framebuffers conta ancora in questa forma – la modalità a buffer singolo fa restituire None a snapshot(blocking=False) finché il frame successivo non viene catturato, mentre il double o triple buffering attenua questo effetto, così il wrapper di solito trova un frame bufferizzato in attesa al primo polling. Vedi il capstone AsyncCSI sul tutorial di asyncio per la spiegazione completa.
classe CSI – Camera Sensor Interface¶
La classe CSI viene usata per controllare un sensore camera.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Crea un oggetto per comunicare con un sensore camera. Sulle schede con più sensori, è possibile selezionare il particolare oggetto CSI passando un
cidcomecsi.LEPTONper selezionare un modulo sensore FLIR Lepton. Secidè -1 viene selezionato il sensore primario (in genere un modulo camera a colori sulle schede multi-sensore).Se
delaysèFalseallora tutti i ritardi di assestamento nel driver csi sono disabilitati. Per impostazione predefinita il driver del sensore introduce un ritardo dopo il reset / cambio di modalità per evitare cheCSI.snapshotrestituisca frame corrotti. Disabilitare i ritardi permette di raggruppare gli aggiornamenti e applicare un singolo ritardo alla fine prima di chiamareCSI.snapshot.Se
fflushèFalseallora lo svuotamento automatico del framebuffer menzionato inCSI.framebuffersè disabilitato. Questo rimuove ogni limite di tempo sui frame nella fifo del frame buffer.streamseleziona se questa CSI è la sorgente di stream inviata all’IDE. SeNone(predefinito) la CSI diventa la sorgente di stream solo se è il sensore primario (non ausiliario). PassaTrueper forzare questa CSI a essere la sorgente di stream, oppure un valore falso qualsiasi per lasciare invariata la sorgente di stream esistente.Metodi¶
- reset(hard: bool = True) None¶
Inizializza il sensore camera. Esegue un reset hardware commutando il GPIO del segnale RESET verso il modulo camera se
hardèTrue.harddovrebbe essere impostato a false quando si resettano sensori camera ausiliari che condividono lo stesso GPIO del segnale RESET con il modulo primario.
- shutdown(enable: bool) None¶
Mette la camera in una modalità a consumo inferiore rispetto allo sleep (ma la camera deve essere resettata al risveglio).
- flush() None¶
Copia il contenuto del frame buffer corrente nell’anteprima dell’IDE. Chiama questo metodo dopo l’ultimo
CSI.snapshotse lo script termina, così l’IDE mostra l’ultimo frame.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Scatta una foto usando la camera e restituisce un oggetto
image.Image.Se viene passato
timee/oframes, snapshot si blocca per queitimemillisecondi e/oframescatturati dalla camera. Entrambi gli argomenti possono essere usati contemporaneamente. Una volta trascorsotimee/oframes, snapshot restituiràNone.blockingpuò essereFalseper abilitare il comportamento non bloccante, che farà restituireNonea snapshot quando l’immagine successiva dalla camera non è pronta invece di attendere.imagepuò essere un altro oggettoimage.Imageda aggiornare con la nuova immagine catturata dalla camera invece di restituire un nuovo oggettoimage.Image. Il contenuto dell’immagine precedente viene sovrascritto tramite una copia profonda.Se
CSI.auto_rotationè abilitato questo metodo restituirà unimage.Imagegià ruotato.
- cid() int¶
Restituisce l’ID del chip del modulo camera. Confrontalo con uno tra
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.FROGEYE2020ocsi.SOFTCSI.
- readable() bool¶
Restituisce
Truese c’è un’immagine pronta per essere restituita daCSI.snapshot, così una chiamata a snapshot non si bloccherà.
- pixformat(pixformat: int | None = None) int | None¶
Imposta il formato dei pixel del modulo camera a uno tra
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422ocsi.JPEG(solo sull’OV2640/OV5640).Restituisce il pixformat corrente se chiamato senza argomenti.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Imposta il frame size del modulo camera a una delle costanti di dimensione (es.
csi.QVGA,csi.VGA,csi.HD, ecc. — vedi la sezione delle costanti).In alternativa, puoi passare un framesize personalizzato come tupla
(w, h). Quando viene chiamatoCSI.snapshotil framesize personalizzato verrà valutato rispetto alle regole DMA. In generale i framesize devono essere un multiplo di 8 pixel e/o 16 byte.Restituisce il framesize corrente se chiamato senza argomenti.
- framerate(rate: int | None = None) int | None¶
Imposta il frame rate in Hz del modulo camera.
Restituisce il framerate corrente se chiamato senza argomenti.
Nota
CSI.frameratefunziona scartando i frame ricevuti dal modulo camera per mantenere il frame rate pari o inferiore alla frequenza specificata. Per impostazione predefinita la camera funzionerà al massimo frame rate. Se implementato per il particolare sensore camera,CSI.framerateridurrà anche internamente il frame rate del sensore camera per risparmiare energia e migliorare la qualità dell’immagine aumentando l’esposizione del sensore.CSI.frameratepuò entrare in conflitto conCSI.auto_exposuresu alcune camere.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Imposta la risoluzione della camera a una sotto-regione della risoluzione corrente.
roiè una tupla(x, y, w, h). Puoi anche passare(w, h)e la finestra verrà centrata.Restituisce la tupla
(x, y, w, h)corrente se chiamato senza argomenti.
- gainceiling(gainceiling: int) bool¶
Imposta il gainceiling dell’immagine della camera a uno tra 2, 4, 8, 16, 32, 64 o 128.
Restituisce
Truein caso di successo eFalsein caso di fallimento.
- brightness(brightness: int) bool¶
Imposta la luminosità dell’immagine della camera.
Restituisce
Truein caso di successo eFalsein caso di fallimento.
- contrast(contrast: int) bool¶
Imposta il contrasto dell’immagine della camera.
Restituisce
Truein caso di successo eFalsein caso di fallimento.
- saturation(saturation: int) bool¶
Imposta la saturazione dell’immagine della camera.
Restituisce
Truein caso di successo eFalsein caso di fallimento.
- quality(quality: int) bool¶
Imposta la qualità di compressione JPEG dell’immagine della camera. Da 0 a 100.
Restituisce
Truein caso di successo eFalsein caso di fallimento.Nota
Solo per le camere OV2640/OV5640.
- colorbar(enable: bool) bool¶
Attiva (
True) o disattiva (False) la modalità a barre di colore. Per impostazione predefinita è disattivata.Restituisce
Truein caso di successo eFalsein caso di fallimento.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enableattiva (True) o disattiva (False) il controllo automatico del guadagno. La camera si avvia con il controllo automatico del guadagno attivo.Se
enableèFalsepuoi impostare un guadagno fisso in decibel congain_db.Se
enableèTruepuoi impostare il limite massimo di guadagno in decibel congain_db_ceilingper l’algoritmo di controllo automatico del guadagno.Nota
Devi disattivare anche il bilanciamento del bianco se vuoi tracciare i colori.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableattiva (True) o disattiva (False) il controllo automatico dell’esposizione. La camera si avvia con il controllo automatico dell’esposizione attivo.Se
enableèFalsepuoi impostare un tempo di esposizione fisso in microsecondi conexposure_us.Nota
Gli algoritmi di esposizione automatica della camera sono piuttosto conservativi riguardo a quanto modificano il valore di esposizione e in genere evitano di cambiarlo di molto. Modificano invece molto il valore di guadagno per gestire le variazioni di illuminazione.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enableattiva (True) o disattiva (False) il bilanciamento automatico del bianco. La camera si avvia con il bilanciamento automatico del bianco attivo.Se
enableèFalsepuoi impostare un guadagno fisso in decibel per i canali rosso, verde e blu rispettivamente conrgb_gain_db.Nota
Devi disattivare anche il controllo del guadagno se vuoi tracciare i colori.
- rgb_gain_db() Tuple[float, float, float]¶
Restituisce una tupla
(r, g, b)dei valori correnti di guadagno rosso, verde e blu della camera in decibel.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Imposta la calibrazione automatica del livello di nero (BLC) sulla camera.
enablepassaTrueoFalseper attivare o disattivare il BLC. In genere lo si vuole sempre attivo.regsse disabilitato, puoi impostare manualmente i valori dei registri BLC da una precedente chiamata aCSI.blc_regs.
- blc_regs() List[int]¶
Restituisce i registri BLC del sensore come una lista di interi. Da usare con
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Attiva (
True) o disattiva (False) la modalità mirror orizzontale. Per impostazione predefinita è disattivata.Restituisce l’impostazione corrente se chiamato senza argomenti.
- vflip(enable: bool | None = None) bool | None¶
Attiva (
True) o disattiva (False) la modalità flip verticale. Per impostazione predefinita è disattivata.Restituisce l’impostazione corrente se chiamato senza argomenti.
- transpose(enable: bool | None = None) bool | None¶
Attiva (
True) o disattiva (False) la modalità transpose. Per impostazione predefinita è disattivata.vflip=False, hmirror=False, transpose=False -> rotazione di 0 gradi
vflip=True, hmirror=False, transpose=True -> rotazione di 90 gradi
vflip=True, hmirror=True, transpose=False -> rotazione di 180 gradi
vflip=False, hmirror=True, transpose=True -> rotazione di 270 gradi
Restituisce l’impostazione corrente se chiamato senza argomenti.
- auto_rotation(enable: bool | None = None) bool | None¶
Attiva (
True) o disattiva (False) la modalità di rotazione automatica. Per impostazione predefinita è disattivata.Restituisce l’impostazione corrente se chiamato senza argomenti.
Nota
Questo metodo funziona solo quando la OpenMV Cam ha un
imuinstallato e viene abilitato automaticamente.
- framebuffers(count: int | None = None) int | None¶
Imposta il numero di frame buffer usati per ricevere i dati dell’immagine. Per impostazione predefinita la OpenMV Cam tenterà di allocare il numero massimo di frame buffer possibile. La riallocazione avviene ogni volta che vengono chiamati
CSI.pixformat,CSI.framesizeoCSI.window.Un
countpari a 1 (buffer singolo), 2 (double buffer) o 3 (triple buffer) seleziona la corrispondente modalità di cattura. Passa 4 o più per mettere il driver in modalità video FIFO, dovecountbuffer vengono accodati — utile per la registrazione video su scheda SD. In caso di perdita di frame, tutti i frame buffer tranne quello attivo vengono svuotati, cosìCSI.snapshotrestituisce sempre un frame recente.Restituisce il count corrente se chiamato senza argomenti.
- special_effect(effect: int) bool¶
Imposta l’effetto digitale speciale (uno tra
csi.NORMALocsi.NEGATIVE).Restituisce
Truein caso di successo eFalsein caso di fallimento.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrueper abilitare,Falseper disabilitare.radiraggio intero dei pixel da correggere.coefpotenza della correzione.Restituisce
Truein caso di successo eFalsein caso di fallimento.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Registra la callback
cbda eseguire (in contesto di interrupt) ogni volta che il modulo camera genera un nuovo frame (ma prima che il frame venga ricevuto).cbaccetta un argomento e riceve lo stato corrente del pin vsync dopo il cambiamento.Restituisce la callback registrata se chiamato senza argomenti. Passa un qualsiasi valore non chiamabile per cancellare la callback.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Registra la callback
cbda eseguire (in contesto di interrupt) ogni volta che il modulo camera genera un nuovo frame e il frame è pronto per essere letto tramiteCSI.snapshot.cbnon accetta argomenti. Usala per programmare la lettura di un frame successivamente conmicropython.schedule().Restituisce la callback registrata se chiamato senza argomenti. Passa un qualsiasi valore non chiamabile per cancellare la callback.
- ioctl(request: int, *args) Any¶
Esegue una richiesta specifica del sensore.
requestè una delle costantiIOCTL_*; i restanti argomenti posizionali e il valore di ritorno dipendono dalla richiesta. Le richieste supportate sono raggruppate per famiglia di sensori qui sotto.Generico (qualsiasi sensore):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Imposta la finestra di lettura del sensore. Una finestra più piccola aumenta il frame rate a scapito del campo visivo.
ioctl(IOCTL_GET_READOUT_WINDOW)Restituisce la finestra di lettura corrente come una tupla
(x, y, w, h).ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Abilita (
True) o disabilita (False) la modalità triggered sull’MT9V034.ioctl(IOCTL_GET_TRIGGERED_MODE)Restituisce lo stato corrente della modalità triggered come un
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Quando
True, istruisceframesize()a ottimizzare per il campo visivo piuttosto che per il frame rate.ioctl(IOCTL_GET_FOV_WIDE)Restituisce lo stato corrente di FOV-wide come un
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Abilita (
True) o disabilita (False) la «modalità notturna» a bassa luminosità del sensore. Solo OV7725 e OV5640.ioctl(IOCTL_GET_NIGHT_MODE)Restituisce lo stato corrente della modalità notturna come un
bool.ioctl(IOCTL_GET_RGB_STATS)Restituisce una tupla di 4 elementi con le statistiche grezze dei canali RGB
(r, gb, gr, b)lette dal sensore (tipicamente usate per la regolazione del bilanciamento del bianco).
OV5640 FPC – messa a fuoco automatica:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Avvia una scansione di messa a fuoco automatica sul modulo OV5640 FPC.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Mette in pausa una scansione di messa a fuoco automatica in corso.
ioctl(IOCTL_RESET_AUTO_FOCUS)Reimposta la posizione di messa a fuoco automatica a quella predefinita.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Si blocca finché la scansione di messa a fuoco automatica corrente non termina.
timeout_msvale 5000 di default se omesso.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Restituisce la larghezza dell’immagine Lepton in pixel.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Restituisce l’altezza dell’immagine Lepton in pixel.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Restituisce il tipo di Lepton (radiometrico o no) come int.
ioctl(IOCTL_LEPTON_GET_REFRESH)Restituisce il refresh rate del Lepton in Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Restituisce la risoluzione ADC del Lepton in bit.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Esegue un comando dell’SDK FLIR Lepton.
cmdè l’id di comando a 16 bit definito dall’SDK.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Scrive un attributo dell’SDK Lepton.
attr_idè l’id dell’attributo a 16 bit;payloadè unbytes/bytearrayla cui lunghezza deve essere un multiplo di 16 bit.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Legge un attributo dell’SDK Lepton.
attr_idè l’id dell’attributo a 16 bit;wordsè il numero di parole a 16 bit da leggere. Restituisce unbytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Restituisce la temperatura del focal-plane-array del Lepton in gradi Celsius.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Restituisce la temperatura ausiliaria del Lepton in gradi Celsius.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Commuta il Lepton tra l’uscita AGC e l’uscita diretta di temperatura.
measurement_enabled=Trueabilita l’uscita diretta di temperatura. Il flag opzionalehigh_temp_enabledseleziona l’intervallo di alta temperatura.ioctl(IOCTL_LEPTON_GET_MODE)Restituisce una tupla di 2 elementi
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Imposta l’intervallo di temperatura mappato su
0..255quando la modalità di misura è abilitata.ioctl(IOCTL_LEPTON_GET_RANGE)Restituisce l’intervallo
(min_celsius, max_celsius)corrente.
Himax HM01B0 – rilevamento del movimento:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Abilita (
True) o disabilita (False) il blocco di rilevamento del movimento on-sensor dell’HM01B0.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Imposta la finestra di rilevamento del movimento sull’HM01B0.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Imposta la soglia di rilevamento del movimento (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Azzera il latch dell’interrupt di rilevamento del movimento.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Abilita (
True) o disabilita (False) l’oscillatore interno dell’HM01B0.
Prophesee GENX320 – sensore a eventi:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Applica un preset di bias.
presetè una delle costantiGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Imposta un singolo bias.
biasè una delle costantiGENX320_BIAS_*;valueè l’impostazione intera.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Configura il filtro anti-flicker.
enableè un bool; gli argomenti opzionali di frequenza impostano la banda passante del filtro.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Configura il filtro di contrasto spazio-temporale.
modeè una delle costantiGENX320_STC_*; fino a due ulteriori argomenti sono specifici della modalità.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Commuta il sensore tra le modalità frame ed eventi.
modeè una delle costantiGENX320_MODE_*. Per la modalità a eventi,evt_resè la lunghezza dell’asse delle righe del buffer di eventi passato aIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Legge gli eventi in
buf, unndarrayuint16di forma(EVT_res, 6)doveEVT_resè una potenza di due tra 1024 e 65536. Le colonne sono:[0]– tipo di evento (PIX_OFF_EVENT/PIX_ON_EVENT/ trigger).[1]– secondi.[2]– millisecondi.[3]– microsecondi.[4]– coordinatax.[5]– coordinatay.
Restituisce il numero di eventi scritti.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Restituisce un
image.Imagecontenente il frame di eventi grezzo dal GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Disattiva i pixel il cui rumore supera di più di
sigmadeviazioni standard la distribuzione normale.iterationsè il numero intero di passaggi di calibrazione. Restituisce il numero di pixel disabilitati.
- color_palette(palette: int | None = None) int | None¶
Imposta la palette di colori da usare per operazioni come la conversione da scala di grigi a RGB565 del FLIR Lepton o la visualizzazione degli eventi del GENX320. Una tra
image.PALETTE_RAINBOW,image.PALETTE_IRONBOWe (quando supportate)image.PALETTE_DEPTH,image.PALETTE_EVT_DARKoimage.PALETTE_EVT_LIGHT.Restituisce l’impostazione corrente se chiamato senza argomenti.
Funzioni¶
Costanti¶
- csi.BINARY: int¶
Formato dei pixel BINARY (bitmap). Ogni pixel è a 1 bit. Utile per la memorizzazione di maschere; può essere usato con
image.Image().
- csi.RGB565: int¶
Formato dei pixel RGB565. Ogni pixel è a 16 bit (5 bit rosso, 6 bit verde, 5 bit blu).
- csi.YUV422: int¶
Formato dei pixel YUV422. Ogni pixel è memorizzato come un valore Y a 8 bit in scala di grigi seguito da valori di colore U/V a 8 bit alternati e condivisi tra due valori Y (Y1, U, Y2, V, …). Solo alcuni metodi di elaborazione delle immagini funzionano con YUV422.
- csi.JPEG: int¶
Modalità JPEG. Il modulo camera emette immagini JPEG compresse. Usa
CSI.qualityper controllare la qualità JPEG. Funziona solo per le camere OV2640/OV5640.
- csi.NORMAL: int¶
Modalità normale per
CSI.special_effect.
- csi.NEGATIVE: int¶
Modalità negativa per
CSI.special_effect.
- csi.SXGA: int¶
Risoluzione 1280x1024 per il sensore camera. Funziona solo per le camere OV2640/OV5640.
- csi.UXGA: int¶
Risoluzione 1600x1200 per il sensore camera. Funziona solo per le camere OV2640/OV5640.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Ottiene lo stato della modalità triggered per l’MT9V034. Vedi
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Abilita
CSI.framesizea ottimizzare per il campo visivo invece che per gli FPS. VediCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Restituisce se
CSI.framesizesta ottimizzando per il campo visivo invece che per gli FPS. VediCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Avvia la messa a fuoco automatica sul modulo camera OV5640 FPC. Vedi
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Mette in pausa la messa a fuoco automatica (mentre è in esecuzione) per il modulo camera OV5640 FPC. Vedi
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Reimposta la messa a fuoco automatica a quella predefinita per il modulo camera OV5640 FPC. Vedi
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Attende il completamento della messa a fuoco automatica sul modulo camera OV5640 FPC. Vedi
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Attiva o disattiva la modalità notturna. Riduce il frame rate per aumentare dinamicamente l’esposizione. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Restituisce la larghezza della risoluzione dell’immagine del FLIR Lepton in pixel. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Restituisce l’altezza della risoluzione dell’immagine del FLIR Lepton in pixel. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
Restituisce il tipo di FLIR Lepton (radiometrico o no). Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Restituisce il refresh rate del FLIR Lepton in Hz. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Restituisce la risoluzione ADC del FLIR Lepton in bit. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
Imposta un attributo del FLIR Lepton dall’SDK FLIR Lepton. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
Ottiene un attributo del FLIR Lepton dall’SDK FLIR Lepton. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Ottiene la temperatura FPA del FLIR Lepton in Celsius. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Ottiene la temperatura AUX del FLIR Lepton in Celsius. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Imposta il driver del FLIR Lepton in una modalità in cui ogni pixel è un valore di temperatura. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Restituisce se la modalità di misura è abilitata per il sensore FLIR Lepton. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Imposta l’intervallo di temperatura mappato sui valori dei pixel in modalità di misura. Vedi
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RANGE: int¶
Restituisce l’intervallo di temperatura usato per la modalità di misura. Vedi
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_ENABLE: int¶
Controlla l’interrupt di rilevamento del movimento sull’HM01B0. Vedi
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_WINDOW: int¶
Imposta la finestra di rilevamento del movimento sull’HM01B0. Vedi
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_THRESHOLD: int¶
Imposta la soglia di rilevamento del movimento sull’HM01B0. Vedi
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_CLEAR: int¶
Azzera l’interrupt di rilevamento del movimento sull’HM01B0. Vedi
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Imposta i bias del sensore GENX320 a uno dei preset
GENX320_BIASES_*. VediCSI.ioctl. DopoCSI.resetil driver applicacsi.GENX320_BIASES_LOW_NOISE, noncsi.GENX320_BIASES_DEFAULT— usa questo ioctl per passare a un preset diverso quando l’applicazione richiede più sensibilità o banda passante.
- csi.GENX320_BIASES_DEFAULT: int¶
Valori predefiniti del datasheet GenX320 — sensibilità, rumore e banda passante bilanciati per scene generiche.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Ottimizzato per condizioni di scarsa illuminazione — entrambe le soglie di contrasto allentate per una maggiore sensibilità, FO ridotto, HPF disabilitato così anche le variazioni lente di luminosità vengono registrate.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Ottimizzato per tracciare LED lampeggianti ad alto contrasto (marker attivi) — soglie di contrasto innalzate così solo le transizioni nette attivano eventi, FO e HPF spinti al massimo per massimizzare la banda passante e respingere la lenta deriva ambientale, REFR=0 così ogni fronte di lampeggio viene catturato.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Predefinito del driver — sensibilità inferiore rispetto a
DEFAULT(soglie di contrasto innalzate) e un FO più basso per minore attività da rumore di fondo. Ideale per scene statiche o lente in cui i falsi eventi dominerebbero.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Ottimizzato per scene a movimento rapido — FO più alto per una banda passante dei pixel più ampia, HPF più alto per respingere le variazioni lente, REFR più alto per un tempo morto più lungo dopo ogni evento così la lettura non satura.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Imposta un singolo bias del sensore GENX320 a un valore DAC. Passa una costante
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFocsi.GENX320_BIAS_REFR) e un valore DAC intero. Ogni bias è indipendente — chiama ripetutamente questo ioctl per regolare solo i bias necessari dopo aver applicato un preset. VediCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Soglia di contrasto del comparatore negativo — controlla di quanto un pixel deve scurirsi prima che venga generato un
csi.PIX_OFF_EVENT. Valore più basso = più sensibile (più eventi).
- csi.GENX320_BIAS_DIFF_ON: int¶
Soglia di contrasto del comparatore positivo — controlla di quanto un pixel deve schiarirsi prima che venga generato un
csi.PIX_ON_EVENT. Valore più basso = più sensibile (più eventi).
- csi.GENX320_BIAS_FO: int¶
Frequenza di taglio del filtro passa-basso del pixel — bilancia la banda passante del pixel (velocità/latenza) rispetto all’attività da rumore di fondo. Valore più alto = risposta del pixel più rapida, più rumore.
- csi.GENX320_BIAS_HPF: int¶
Frequenza di taglio del filtro passa-alto del pixel — respinge le variazioni lente di luminosità. Valore più alto = variazioni più lente filtrate (solo le transizioni rapide vengono registrate).
- csi.GENX320_BIAS_REFR: int¶
Periodo refrattario del pixel — tempo morto dopo che un pixel emette un evento durante il quale non può attivarsi di nuovo. Valore più alto = tempo morto più lungo, meno eventi da un pixel affollato.
- csi.IOCTL_GENX320_SET_AFK: int¶
Imposta il filtro anti-flicker (AFK) del GENX320, che respinge gli eventi dei pixel che commutano a una banda di frequenza periodica (illuminazione fluorescente, display pilotati da LED, ecc.). Passa
enable(1 per abilitare, 0 per disabilitare) e, in fase di abilitazione, i limiti della banda in hertz:(enable, freq_low_hz, freq_high_hz). VediCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Imposta la modalità del filtro di contrasto spazio-temporale (STC) del GENX320. Passa una costante
GENX320_STC_*(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) seguita dalla soglia o dalle soglie richieste dalla modalità (in millisecondi). VediCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Mantiene il secondo evento di un burst; scarta il primo evento e ogni evento successivo. Accetta un parametro,
stc_thresholdin millisecondi — gli eventi entro quella finestra rispetto a un evento precedente sullo stesso pixel sono considerati parte dello stesso burst.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Mantiene il primo evento di un burst; scarta gli eventi successivi sullo stesso pixel finché non è trascorso
trail_threshold. Accetta un parametro,trail_thresholdin millisecondi.
- csi.GENX320_STC_TRAIL: int¶
Mantiene il primo evento di un burst più i fronti successivi — combina
csi.GENX320_STC_ONLYecsi.GENX320_STC_TRAIL_ONLY. Accetta due parametri,stc_thresholdetrail_threshold(entrambi in ms); il sensore richiede che i due restino entro un rapporto di circa 13:1.
- csi.IOCTL_GENX320_SET_MODE: int¶
Imposta la modalità operativa del GENX320. Passa
csi.GENX320_MODE_HISTOper l’istogramma di eventi on-chip (la cam si comporta come una normale camera in scala di grigi al framerate configurato) oppurecsi.GENX320_MODE_EVENTseguito dalla lunghezza dell’asse delle righe dell”ndarraydi eventi (una potenza di due tra 1024 e 65536) per lo streaming di eventi grezzi. VediCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Modalità istogramma — gli eventi vengono accumulati on-chip in bin per-pixel e riportati come frame in scala di grigi 320x320 alla frequenza configurata (~20-350 FPS). La cam appare come una normale camera, quindi tutte le routine standard di elaborazione delle immagini funzionano direttamente.
- csi.GENX320_MODE_EVENT: int¶
Modalità a eventi — bypassa l’istogramma on-chip e trasmette gli eventi grezzi in un
ndarraynumpy con timestamp in microsecondi, per applicazioni che necessitano del pieno dettaglio temporale anziché di un frame pre-binnato.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Legge gli eventi grezzi in un
ndarrayuint16 di forma(EVT_res, 6)(conEVT_rescorrispondente alla dimensione del buffer passata acsi.IOCTL_GENX320_SET_MODE). Le colonne sono[0]tipo di evento (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]timestamp in secondi,[2]millisecondi,[3]microsecondi,[4]coordinata X (0-319),[5]coordinata Y (0-319). Restituisce il numero di eventi scritti nel buffer, lasciando intatte le righe più vecchie oltre tale conteggio. VediCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Disabilita automaticamente gli hot pixel — pixel che si attivano spuriamente anche su una scena statica. Il driver costruisce un conteggio di hit per-pixel 320x320, calcola la media e la deviazione standard e disabilita ogni pixel il cui conteggio supera
mean + sigma * stddev. Passa un budget di conteggio eventi (eventi da conteggiare prima di calcolare le statistiche — più alto = stima più affidabile, più lento; ~10000 è un buon valore predefinito) e un valore float sigma (più basso = più aggressivo, ~0.5 predefinito). Restituisce il numero di pixel disabilitati. Punta prima la cam su una scena statica così gli eventi dovuti al movimento non vengano conteggiati a sfavore di pixel che in realtà sono a posto. VediCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Restituisce un
image.Imagedi frame di eventi grezzo dal GENX320, con gli eventi ancora nella codifica nativa impacchettata del chip — utile se vuoi inoltrare lo stream grezzo a un PC per la decodifica offline anziché elaborarlo sulla cam. VediCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
Tipo di evento GENX320 (colonna
[0]) — un pixel ha rilevato una diminuzione di luminosità (la soglia di contrasto negativa è stata superata). Le colonne[4]/[5]contengono la X/Y del pixel.
- csi.PIX_ON_EVENT: int¶
Tipo di evento GENX320 (colonna
[0]) — un pixel ha rilevato un aumento di luminosità (la soglia di contrasto positiva è stata superata). Le colonne[4]/[5]contengono la X/Y del pixel.
- csi.RST_TRIGGER_RISING: int¶
Tipo di evento GENX320 (colonna
[0]) — trigger di reset del pixel, fronte di salita. X/Y non sono usate. Non generato dal firmware al momento.
- csi.RST_TRIGGER_FALLING: int¶
Tipo di evento GENX320 (colonna
[0]) — trigger di reset del pixel, fronte di discesa. X/Y non sono usate. Non generato dal firmware al momento.
- csi.EXT_TRIGGER_RISING: int¶
Tipo di evento GENX320 (colonna
[0]) — il pin di trigger esterno del sensore ha visto un fronte di salita. L’ingresso di trigger esterno del GENX320 è cablato alla linea di frame-sync della camera, instradata anche a P10 sul processore e sul connettore pin. X/Y non sono usate.
- csi.EXT_TRIGGER_FALLING: int¶
Tipo di evento GENX320 (colonna
[0]) — il pin di trigger esterno del sensore ha visto un fronte di discesa. L’ingresso di trigger esterno del GENX320 è cablato alla linea di frame-sync della camera, instradata anche a P10 sul processore e sul connettore pin. X/Y non sono usate.