Ich denke, es ist am besten, diese Frage zu beantworten, indem Sie einen Einblick geben, wie die Dinge etwas weiter unten funktionieren. Zunächst jedoch eine Einschränkung: Ich bin kein Firmware-Experte. Mein ziemlich grobes Verständnis der Funktionsweise des Pi-Kameramoduls basiert auf meiner Erfahrung mit dem Schreiben der Picamera-Bibliothek und der Interaktion mit den viel erfahreneren Firmware-Entwicklern in den Pi-Foren. Wenn Sie widersprüchliche Informationen von den Firmware-Entwicklern hören, sind sie die Autorität dafür, nicht ich! Damit aus dem Weg ...
Sobald das Kameramodul des Pi initialisiert ist, erfasst es Bilder. Diese Frames werden (für den Endbenutzer) ausgegeben, aber in der Firmware der Kamera ist noch viel mehr los. Die Bilder werden gemessen, um die Verstärkung zu bestimmen, die auf den Sensor (AGC) angewendet werden soll, den Weißabgleich, der dem AWB-Korrekturalgorithmus zugeführt werden soll usw. Wenn Sie beispielsweise die Kamera starten und sofort mit der Aufnahme beginnen, sehen Sie normalerweise die Der Weißabgleich korrigiert sich in den ersten Bildern der Aufnahme:
import picamera
import time
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
camera.start_recording('video1.h264')
time.sleep(5)
camera.stop_recording()
Wenn Sie jedoch eine Verzögerung festlegen, bevor Sie mit der Aufnahme beginnen, werden Sie feststellen, dass der Weißabgleich zu Beginn der Aufnahme stabil ist:
import picamera
import time
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
time.sleep(5)
camera.start_recording('video2.h264')
time.sleep(5)
camera.stop_recording()
Was passiert also tatsächlich, wenn wir ein Bild aufnehmen , da die Kamera immer Bilder aufzeichnet, auch wenn wir keine Bilder oder Videos aufnehmen? Wir weisen die Firmware an, die Erfassung zu aktivieren, und die Firmware wartet, bis der nächste Frame abgeschlossen ist, bevor sie ihn an uns zurückgibt (wenn Sie Bilder vom Standbild-Port anstelle des Video-Ports aufnehmen, wird noch viel mehr hinzugefügt Der Modus wechselt, aber Sie beschäftigen sich mit dem Videoanschluss. Lassen Sie uns das ignorieren.
Überlegen Sie, was dies für die Synchronisation bedeutet (Ihr spezieller Anwendungsfall). Die Kamera ist nicht "bereit", ein Bild an einem bestimmten Punkt aufzunehmen. Es erfasst bereits einen Frame und wenn Sie nach einem fragen, erhalten Sie den nächsten vollständigen Frame, der verfügbar wird. Um die Bilder der Kameras zu synchronisieren, müssten alle Kameras genau zur gleichen Zeit initialisiert werden, und dann müssten ihre internen Uhren genau synchron laufen (die Kameras haben ihre eigene interne Uhr; sie verlassen sich nicht auf die Pis Uhr).
Leider denke ich nicht, dass dies wirklich eine realistische Perspektive ist. Wenn ich mich richtig erinnere, verwendet das Pi-Rechenmodul (das 2 Kameraanschlüsse an Bord hat und 2 Kameramodule gleichzeitig unterstützt) einige spezielle Aufrufe in der Firmware, um die 2 Module dazu zu bringen, ein einzelnes Taktsignal zu verwenden (ich habe keine Ahnung, wie dies funktioniert funktioniert auf Hardware-Ebene, aber ich gehe davon aus, dass es etwas verwendet, das für das Rechenmodul spezifisch ist); Ich kann mir nicht vorstellen, wie Sie mit 4 Pis etwas Ähnliches machen würden.
Aktualisieren:
Ich sollte hinzufügen, dass es möglich ist, eine grobe Synchronisation mit einigen vernünftigen Netzwerkkenntnissen (z. B. UDP-Broadcast-Paketen) durchzuführen. Mit anderen Worten, es ist möglich, alle Pi in einem Netzwerk dazu zu bringen, eine Erfassung innerhalb einer Millisekunde voneinander auszulösen (unter der Annahme eines anständigen Netzwerks mit geringer Latenz wie Ethernet), aber wie oben beschrieben, garantiert dies immer noch nicht, dass alle Kameras tatsächlich funktionieren gleichzeitig einen Frame erfassen; Zwischen den Startzeiten der resultierenden Captures liegt eine Verzögerung von bis zu einem Frame (plus Netzwerklatenz).
Wenn diese Synchronisationsstufe für Benutzer ausreicht, sollten sie sich das Compoundpi-Projekt ansehen, ein weiteres Projekt, das ich zu diesem Zweck über Picamera geschrieben habe.