Heim >Backend-Entwicklung >C++ >Wie überwindet man Verzögerungen bei der OpenCV-Videoaufnahme, die durch die Akkumulation des Aufnahmepuffers verursacht werden?

Wie überwindet man Verzögerungen bei der OpenCV-Videoaufnahme, die durch die Akkumulation des Aufnahmepuffers verursacht werden?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 12:34:02635Durchsuche

How to Overcome Lag in OpenCV VideoCapture Caused by Capture Buffer Accumulation?

OpenCV VideoCapture-Verzögerung durch Capture-Puffer

Sie sind auf ein Verzögerungsproblem mit OpenCVs VideoCapture aufgrund der Anhäufung von Frames im gestoßen Capture-Puffer. Um dieses Problem zu umgehen, haben Sie den Puffer mit 30 Bildern pro Sekunde gelesen, um ihn schnell zu löschen.

OpenCV-Lösung

OpenCV bietet eine Möglichkeit, die Puffergröße manuell festzulegen :

<code class="cpp">cv::VideoCapture cap;
cap.set(CV_CAP_PROP_BUFFERSIZE, 3); // store only 3 frames</code>

Diese Lösung wird jedoch nur vom Backend DC1394 v 2.x unterstützt.

Hackaround 1

Eine Alternative Der Ansatz besteht darin, die Zeit zu messen, die zum Abrufen eines Frames benötigt wird:

  • Wenn die Zeit knapp ist, befindet sich der Frame aus dem Puffer und kann verworfen werden.
  • Wiederholen, bis die Zeit überschritten ist ein Schwellenwert, der angibt, dass der Puffer leer ist.

Hackaround 2

Mit cv können Sie einen dritten Thread erstellen, der kontinuierlich Frames mit hoher Geschwindigkeit erfasst ::VideoCapture.grab() um den Puffer leer zu halten. Synchronisieren Sie den Zugriff zwischen diesem Thread und Ihrem Arbeitsthread mithilfe eines Spin-Locks.

Das obige ist der detaillierte Inhalt vonWie überwindet man Verzögerungen bei der OpenCV-Videoaufnahme, die durch die Akkumulation des Aufnahmepuffers verursacht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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