Denne modusen er laget for konfigurasjoner som ikke bruker et eksternt klokkesignal.Du vil bruke ett kamera i leader-modus (som sender ut et synkroniseringssignal) og alle resterende kameraer i follower-modus.
Veiledning for Leader/Follower-fastvare
Klikk her for å se veiledningen for å oppdatere kameraet ditt mellom Leader- og Follower-modus.
Denne modusen er laget for konfigurasjoner som bruker et eksternt klokkesignal for å sende ut synkroniseringssignalet til alle kameraer.I denne modusen må alle kameraer settes til follower-modus.
Veiledning for Leader/Follower-fastvare
Klikk her for å se veiledningen for å oppdatere kameraet ditt mellom Leader- og Follower-modus.
Importer det nedlastede .ZIP-biblioteket i Arduino IDE.
3
Last opp skissen
Last opp en av de to skissene nedenfor til din Arduino.
Enkel kontroll: Den raskeste måten å komme i gang på, men krever ny flashing av fastvaren for å justere FPS.
Seriell kontroll: Lar deg justere frekvens og driftssyklus i sanntid uten å reflashe (innstillinger nullstilles hvis enheten mister strøm).
Enkel kontroll
Seriekommandoer
#include <PWM.h>// Pin configurationint pin = 9; // Pinint value = 127; // Initial value for the PWM duty cycle// SET FREQUENCY HEREfloat frequency = 60; // Initial frequency in Hzvoid setup(){ // Initialize all timers except for timer0 to save timekeeping tasks InitTimersSafe(); // Set the initial PWM frequency and duty cycle if (SetPinFrequencySafe(pin, frequency)) { pwmWrite(pin, value); Serial.println("PWM frequency and initial duty cycle set."); } else { Serial.println("Failed to set frequency."); }}
#include <PWM.h>// Pin configurationint pin = 9; // Pinint value = 127; // Initial value for the PWM duty cyclefloat frequency = 60; // Initial frequency in Hzvoid setup(){ Serial.begin(9600); // Initialize all timers except for timer0 to save timekeeping tasks InitTimersSafe(); // Set the initial PWM frequency and duty cycle if (SetPinFrequencySafe(pin, frequency)) { pwmWrite(pin, value); Serial.println("PWM frequency and initial duty cycle set."); } else { Serial.println("Failed to set frequency."); }}void loop(){ if (Serial.available()) { // Read frequency and duty cycle values over Serial String inputString = Serial.readStringUntil('\n'); inputString.trim(); int freqDutySplitIndex = inputString.indexOf(','); if (freqDutySplitIndex != -1) { String freqStr = inputString.substring(0, freqDutySplitIndex); String dutyStr = inputString.substring(freqDutySplitIndex + 1); // Parse floats float newFrequency = freqStr.toFloat(); int newDutyCycle = dutyStr.toInt(); // Validate frequency range if (newFrequency >= 1 && newFrequency <= 2000000) { // Set the PWM frequency and apply duty cycle if (SetPinFrequencySafe(pin, newFrequency)) { value = map(constrain(newDutyCycle, 0, 100), 0, 100, 0, 255); pwmWrite(pin, value); Serial.print("Set frequency to: "); Serial.print(newFrequency); Serial.print(" Hz, duty cycle to: "); Serial.print(newDutyCycle); Serial.println("%"); } else { Serial.println("Failed to set new frequency."); } } else { Serial.println("Invalid frequency value."); } } else { Serial.println("Invalid input format. Use frequency,dutycycle (e.g., 60,50)."); } }}
Denne koden lar deg endre PWM-signalet i sanntid. Åpne den serielle monitoren på 9600 baud og send kommandoer i formatet {FREKVENS},{DRIFTSSYKLUS} (f.eks. 60,50 for 60 Hz med 50 % driftssyklus).
I tillegg til vår kommende SDK tilbyr vi for øyeblikket en enkel Python-prosess for å hente synkroniserte bilder fra dine kameraoppsett. (Merk: Dette kan bli faset ut til fordel for den fullt utrustede SDK-en i fremtiden.)
Python-bibliotek for synkronisert video
Følg vår GitHub-veiledning for å installere og bruke vårt egendefinerte Python-bibliotek for Linux.
Dette vil gå gjennom bruk av GStreamer for å synkronisere og sette sammen to videostrømmer.
Deretter opprette en virtuell enhet som kan brukes i andre programmer.
Linux
1
Installer nødvendige pakker
Installer de nødvendige avhengighetene med følgende kommando:
Identifiser enhets-ID-ene til de to kameraene du vil bruke, og velg deretter et enhets-ID-nummer som ikke er oppført.I dette eksempelet vil vi bruke 9 (siden det er ubrukt ovenfor) for å opprette en virtuell enhet kalt stellarHD_stitched. Oppdater 9 i kommandoen nedenfor for å matche den ubrukte ID-en du har valgt:
Du må la denne kommandoen kjøre mens du bruker de synkroniserte, sammensydde videoene. Du kan endre denne kommandoen for å legge til flere kameraer, endre oppløsninger/bildefrekvenser eller endre oppsettet.
5
Bruk den virtuelle enheten i OpenCV
OpenCV-startkode
Følg eksempelkoden vår for å bruke /dev/video9 i OpenCV.
6
Fjern loopback-enheten
For å fjerne loopback-enheten på en trygg måte kan du enten starte datamaskinen på nytt eller kjøre følgende sekvens av kommandoer:1. Identifiser programmer som for øyeblikket bruker loopback-enheten:
sudo lsof /dev/video*
2. Avslutt prosessene ved hjelp av PID-numrene (Process ID):