triggered_mode.py
# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de mode déclenché pour obturateur global
#
# Cet exemple montre comment mettre la caméra à obturateur global en mode déclenché. En mode déclenché,
# snapshot() contrôle EXACTEMENT le moment où l'intégration des pixels de la caméra commence, ce qui permet de synchroniser
# la prise de vue avec un mouvement externe. Comme la caméra capture tous les pixels en même temps
# (puisqu'il s'agit d'une caméra à obturateur global et non à obturateur déroulant), le mouvement dans l'image ne sera
# capturé que pendant le temps d'intégration et non le temps d'intégration multiplié par le nombre
# de lignes de l'image. De plus, le bruit du capteur est réduit en mode déclenché car la caméra ne
# lira les lignes qu'après l'exposition, ce qui donne une image de meilleure qualité.
#
# Cela dit, votre fréquence d'images maximale sera réduite d'un facteur 2 à 3, car les images ne sont plus générées
# en continu par la caméra et parce qu'il faut attendre la fin de l'intégration avant
# la lecture de l'image.
import csi
import time
csi0 = csi.CSI()
csi0.reset() # Réinitialiser et initialiser le capteur.
csi0.pixformat(csi.GRAYSCALE) # Définir le format de pixel sur GRAYSCALE
csi0.framesize(csi.VGA) # Définir la taille d'image à VGA (640x480)
csi0.snapshot(time=2000) # Attendre que les réglages prennent effet.
clock = time.clock() # Créer un objet horloge pour suivre le FPS.
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # Mettre à jour l'horloge FPS.
img = csi0.snapshot() # Prendre une photo et renvoyer l'image.
print(clock.fps()) # Remarque : l'OpenMV Cam tourne environ deux fois moins vite lorsqu'elle est connectée
# à l'IDE. Le FPS devrait augmenter une fois déconnectée.