triggered_mode.py
# Esta obra está licenciada bajo la licencia MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos los derechos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Ejemplo de modo disparado con obturador global
#
# Este ejemplo muestra cómo configurar la cámara de obturador global en modo disparado. En modo disparado
# snapshot() controla EXACTAMENTE cuándo comienza la integración de los píxeles de la cámara, de modo que se puede sincronizar
# la toma de fotos con algún movimiento externo. Dado que la cámara captura todos los píxeles al mismo tiempo
# (al ser una cámara de obturador global en lugar de una cámara de obturador rodante), el movimiento en la imagen
# solo se capturará durante el tiempo de integración y no durante el tiempo de integración multiplicado por el número
# de filas de la imagen. Además, el ruido del sensor se reduce en modo disparado, ya que la cámara no
# leerá las filas hasta después de la exposición, lo que produce una imagen de mayor calidad.
#
# Dicho esto, su velocidad de fotogramas máxima se reducirá entre 2 y 3 veces, ya que los fotogramas ya no se generan
# de forma continua por la cámara y porque hay que esperar a que termine la integración antes
# de la lectura del fotograma.
import csi
import time
csi0 = csi.CSI()
csi0.reset() # Restablecer e inicializar el sensor.
csi0.pixformat(csi.GRAYSCALE) # Establezca el formato de píxel en GRAYSCALE
csi0.framesize(csi.VGA) # Establece el tamaño de fotograma en VGA (640x480)
csi0.snapshot(time=2000) # Esperar a que los ajustes surtan efecto.
clock = time.clock() # Crear un objeto clock para registrar los FPS.
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # Actualizar el reloj de FPS.
img = csi0.snapshot() # Tomar una foto y devolver la imagen.
print(clock.fps()) # Nota: la OpenMV Cam funciona a aproximadamente la mitad de velocidad cuando está conectada
# al IDE. Los FPS deberían aumentar una vez desconectada.