Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich die Pufferverzögerung bei der Videoaufnahme mit VideoCapture von OpenCV reduzieren?

Barbara Streisand
Freigeben: 2024-11-07 09:57:02
Original
381 Leute haben es durchsucht

How Can I Reduce Buffer Lag When Capturing Video with OpenCV's VideoCapture?

Pufferverzögerung in OpenCV VideoCapture

Einführung

In diesem Artikel wird ein häufiges Problem untersucht, das bei der Videoaufnahme mit dem VideoCapture-Objekt von OpenCV auftritt: Verzögerung aufgrund der Aufnahme Puffer. Wir stellen mögliche Lösungen vor, sowohl von OpenCV als auch als Hackarounds.

OpenCV-Lösung

Laut der OpenCV-Dokumentation kann die Capture-Puffergröße eingestellt werden. Diese Funktion ist jedoch nur mit dem Backend DC1394 v2.x verfügbar.

<code class="cpp">cv::VideoCapture cap;
cap.set(CV_CAP_PROP_BUFFERSIZE, 3);</code>
Nach dem Login kopieren

In OpenCV-Versionen 3.4 und höher scheint die Einschränkung entfernt worden zu sein:

<code class="cpp">cv::VideoCapture cap;
cap.set(cv::CAP_PROP_BUFFERSIZE, 3);</code>
Nach dem Login kopieren

Hackaround 1

Wenn die OpenCV-Lösung fehlschlägt, können wir einen Hackaround anwenden, der auf der Messung der Zeit basiert, die zum Abrufen eines Frames benötigt wird. Wenn es zu kurz ist, wurde der Frame wahrscheinlich aus dem Puffer genommen und kann verworfen werden. Wir fragen weiterhin Frames ab, bis die Zeit einen Schwellenwert überschreitet, was auf einen aktuellen Frame hinweist.

Hackaround 2

Ein weiterer Hackaround besteht darin, einen separaten Thread zu erstellen, um Frames kontinuierlich mit hoher Geschwindigkeit zu erfassen cv::VideoCapture.grab(), um den Puffer leer zu halten. Die Synchronisierung zwischen Haupt- und Zusatzthreads kann über einen Spinlock erreicht werden.

Fazit

Obwohl OpenCV eine Puffergrößeneinstellung bietet, ist deren Verfügbarkeit bei bestimmten Backends begrenzt. Die vorgestellten Hackarounds bieten alternative Ansätze zur Verringerung der Pufferverzögerung, sodass Entwickler Videos mit geringeren Verzögerungen aufnehmen können. Die optimale Lösung kann je nach System- und Anwendungsanforderungen variieren.

Das obige ist der detaillierte Inhalt vonWie kann ich die Pufferverzögerung bei der Videoaufnahme mit VideoCapture von OpenCV reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!