Penso che sia meglio rispondere a questa domanda dando alcune informazioni su come le cose funzionano un po 'più in basso. Prima però un avvertimento: non sono un esperto di firmware per nessun tratto dell'immaginazione; la mia comprensione piuttosto approssimativa di come funziona il modulo videocamera Pi si basa sulla mia esperienza di scrittura della libreria di fotocamere e di interazione con gli sviluppatori di firmware molto più esperti sui forum Pi. Se senti informazioni contraddittorie dagli sviluppatori del firmware, sono l'autorità su questo, non io! Con quello fuori mano ...
Non appena il modulo videocamera del Pi viene inizializzato, cattura i fotogrammi. Questi frame vengono scaricati (per quanto riguarda l'utente finale) ma all'interno del firmware della fotocamera c'è molto altro da fare. I fotogrammi vengono misurati per determinare il guadagno da applicare al sensore (AGC), il bilanciamento del bianco da alimentare all'algoritmo di correzione AWB, ecc. Ad esempio, se si avvia la fotocamera e si avvia immediatamente la registrazione, in genere viene visualizzato il il bilanciamento del bianco si corregge sui primi fotogrammi della registrazione:
import picamera
import time
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
camera.start_recording('video1.h264')
time.sleep(5)
camera.stop_recording()
Tuttavia, se si pone un ritardo prima di iniziare la registrazione, si noterà che il bilanciamento del bianco è stabile quando inizia la registrazione:
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()
Quindi, dato che la fotocamera cattura sempre i fotogrammi anche quando non stiamo catturando immagini o registrando video, cosa succede realmente quando si sceglie di catturare un'immagine? Diciamo al firmware di attivare l'acquisizione e il firmware attende il completamento del fotogramma successivo prima di restituirlo a noi (in realtà, se stai acquisendo immagini dalla porta fissa invece che dalla porta video, c'è molto di più tra cui cambia modalità, ma ti preoccupi della porta video, quindi ignoriamola).
Considera cosa significa per la sincronizzazione (il tuo caso d'uso particolare). La fotocamera non è "pronta" per acquisire una cornice in un determinato punto. Sta già catturando una cornice e quando ne chiedi una ti consegnerà la successiva completa che diventa disponibile. Per sincronizzare i frame delle telecamere tutte le telecamere dovrebbero essere inizializzate esattamente allo stesso tempo, e quindi i loro orologi interni dovrebbero funzionare esattamente in sincronia (le telecamere hanno il proprio clock interno; non si basano sul Orologio di Pi).
Purtroppo, non penso che questa sia davvero una prospettiva realistica. Se ricordo bene, il modulo di calcolo Pi (che ha 2 porte per videocamera integrate e supporta contemporaneamente 2 moduli videocamera) utilizza alcune chiamate speciali nel firmware per far sì che i 2 moduli utilizzino un singolo segnale di clock (non ho idea di come questo funziona a livello hardware ma suppongo che stia usando qualcosa di specifico per il modulo di calcolo); Non riesco a immaginare come faresti qualcosa di simile in 4 Pis.
Aggiornare:
Vorrei aggiungere che è possibile eseguire una sincronizzazione approssimativa con alcune ragionevoli conoscenze di rete (ad esempio pacchetti di trasmissione UDP). In altre parole, è possibile ottenere tutti i Pi in una rete per innescare una cattura entro un millisecondo l'uno dall'altro (supponendo una rete decente a bassa latenza come Ethernet), ma come descritto sopra che non garantirà comunque che tutte le telecamere effettivamente catturare una cornice allo stesso tempo; ci sarà fino a un ritardo di un frame (più latenza di rete) tra i tempi di inizio delle acquisizioni risultanti.
Se quel livello di sincronizzazione è sufficiente per le persone, potrebbero voler dare un'occhiata al progetto compoundpi, che è un altro progetto che ho scritto su Picamera proprio per questo scopo.