triggered_mode.py
# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Esempio di modalità a trigger con otturatore globale
#
# Questo esempio mostra come impostare la fotocamera a otturatore globale in modalità a trigger. In modalità a trigger
# snapshot() controlla ESATTAMENTE quando inizia l'integrazione dei pixel della fotocamera, così da poter sincronizzare
# l'acquisizione delle immagini con un movimento esterno. Poiché la fotocamera acquisisce tutti i pixel nello stesso momento
# (essendo una fotocamera a otturatore globale anziché a otturatore a scorrimento), il movimento nell'immagine verrà
# catturato solo per il tempo di integrazione e non per il tempo di integrazione moltiplicato per il numero
# di righe dell'immagine. Inoltre, il rumore del sensore è ridotto in modalità a trigger poiché la fotocamera
# non legge le righe finché l'esposizione non è terminata, il che si traduce in un'immagine di qualità superiore.
#
# Detto questo, il frame rate massimo verrà ridotto di un fattore da 2 a 3, poiché i fotogrammi non vengono più generati
# continuamente dalla fotocamera e perché è necessario attendere il termine dell'integrazione prima
# della lettura del fotogramma.
import csi
import time
csi0 = csi.CSI()
csi0.reset() # Resetta e inizializza il sensore.
csi0.pixformat(csi.GRAYSCALE) # Imposta il formato pixel su GRAYSCALE
csi0.framesize(csi.VGA) # Imposta la dimensione del fotogramma a VGA (640x480)
csi0.snapshot(time=2000) # Attendi che le impostazioni abbiano effetto.
clock = time.clock() # Crea un oggetto clock per tracciare gli FPS.
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # Aggiorna il clock degli FPS.
img = csi0.snapshot() # Scatta una foto e restituisce l'immagine.
print(clock.fps()) # Nota: OpenMV Cam funziona a circa metà velocità quando è connessa
# all'IDE. Gli FPS dovrebbero aumentare una volta disconnessa.