Heim >Backend-Entwicklung >C++ >Wie überwindet man Verzögerungen bei der OpenCV-Videoaufnahme, die durch die Akkumulation des Aufnahmepuffers verursacht werden?
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 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.
Eine Alternative Der Ansatz besteht darin, die Zeit zu messen, die zum Abrufen eines Frames benötigt wird:
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!