Global Shutter Camera Module¶
Il Global Shutter Camera Module è un sensore monocromatico che cattura il movimento veloce senza artefatti da rolling shutter. Adatto al tracciamento ad alta velocità, ai droni e agli snapshot di visione artificiale. Il modulo viene fornito con il sensore MT9V024 o MT9V034.
Per il datasheet completo, le foto e gli ordini, consulta la pagina prodotto Global Shutter Camera Module.
In evidenza¶
Sensore monocromatico 752x480 a global shutter
80 FPS a QVGA, 200 FPS a QQVGA, 400 FPS a QQQVGA
Gamma dinamica di 55 dB
Compatibile con tutte le base board modulari OpenMV Cam
Utilizzo¶
Trasmetti video in scala di grigi a 320x240 (QVGA):
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
Il sensore attiva automaticamente il binning dei pixel a risoluzioni più basse — 2x a QVGA (320x240) o inferiore, 4x a QQVGA (160x120) o inferiore — il che riduce proporzionalmente il tempo di lettura e aumenta il frame rate. La camera deve comunque integrare la luce per la finestra di esposizione richiesta, quindi abbina la riduzione della framesize a un limite di esposizione più breve tramite csi.CSI.auto_exposure per raggiungere effettivamente le velocità più elevate (l’immagine sarà più scura — prevedi illuminazione aggiuntiva):
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000) # let auto-exposure settle
csi0.auto_exposure(True, exposure_us=5000) # cap exposure
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
La modalità triggered allinea l’integrazione dei pixel esattamente a ogni chiamata csi.CSI.snapshot, così le catture si sincronizzano con lo snapshot anziché con il clock di frame a corsa libera della camera — utile per sincronizzarsi con un evento esterno o un altro sensore. Abilitala tramite csi.CSI.ioctl con csi.IOCTL_SET_TRIGGERED_MODE — il frame rate scende a circa la metà della modalità a corsa libera perché la lettura non si sovrappone più in pipeline con l’integrazione del frame successivo:
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(time=2000)
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())