triggered_mode.py
# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2023 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Beispiel für Global-Shutter-Trigger-Modus
#
# Dieses Beispiel zeigt, wie die Global-Shutter-Kamera in den Trigger-Modus versetzt wird. Im Trigger-Modus
# steuert snapshot() GENAU, wann die Integration der Kamerapixel beginnt, sodass Sie die Aufnahme
# mit einer externen Bewegung synchronisieren können. Da die Kamera alle Pixel gleichzeitig erfasst
# (da es sich um eine Global-Shutter- und keine Rolling-Shutter-Kamera handelt), wird Bewegung im Bild
# nur für die Integrationszeit erfasst und nicht für die Integrationszeit multipliziert mit der Anzahl
# der Zeilen im Bild. Zusätzlich wird das Sensorrauschen im Trigger-Modus reduziert, da die Kamera
# die Zeilen erst nach der Belichtung ausliest, was zu einer höheren Bildqualität führt.
#
# Allerdings wird Ihre maximale Framerate um das 2- bis 3-fache reduziert, da Frames nicht mehr
# kontinuierlich von der Kamera erzeugt werden und da Sie warten müssen, bis die Integration abgeschlossen ist, bevor
# das Auslesen des Frames beginnt.
import csi
import time
csi0 = csi.CSI()
csi0.reset() # Sensor zurücksetzen und initialisieren.
csi0.pixformat(csi.GRAYSCALE) # Pixelformat auf GRAYSCALE setzen
csi0.framesize(csi.VGA) # Framegröße auf VGA (640x480) setzen
csi0.snapshot(time=2000) # Warten, bis die Einstellungen wirksam werden.
clock = time.clock() # Ein Clock-Objekt erstellen, um die FPS zu verfolgen.
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # Aktualisiert die FPS-Uhr.
img = csi0.snapshot() # Nimmt ein Bild auf und gibt es zurück.
print(clock.fps()) # Hinweis: Die OpenMV Cam läuft etwa halb so schnell, wenn sie
# mit der IDE verbunden ist. Die FPS sollten sich nach dem Trennen erhöhen.