Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengatasi Lag dalam OpenCV VideoCapture Disebabkan oleh Pengumpulan Penampan Tangkap?

Bagaimana untuk Mengatasi Lag dalam OpenCV VideoCapture Disebabkan oleh Pengumpulan Penampan Tangkap?

Susan Sarandon
Susan Sarandonasal
2024-11-06 12:34:02635semak imbas

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

OpenCV VideoCapture Lag Dicetuskan oleh Capture Buffer

Anda telah menghadapi isu lag dengan VideoCapture OpenCV disebabkan pengumpulan bingkai dalam penampan penangkap. Sebagai penyelesaian, anda telah menggunakan membaca penimbal pada 30fps untuk mengosongkannya dengan cepat.

OpenCV Solution

OpenCV menyediakan cara untuk menetapkan saiz penimbal secara manual :

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

Walau bagaimanapun, penyelesaian ini hanya disokong oleh Bahagian belakang DC1394 v 2.x.

Hackaround 1

Pendekatan alternatif ialah mengukur masa yang diperlukan untuk mendapatkan bingkai:

  • Jika masa singkat, bingkai adalah dari penimbal dan boleh dibuang.
  • Ulang sehingga masa melebihi ambang, menunjukkan penimbal kosong.

Hackaround 2

Anda boleh mencipta benang ketiga yang terus merebut bingkai pada kelajuan tinggi menggunakan cv::VideoCapture.grab() untuk memastikan penimbal kosong. Segerakkan akses antara urutan ini dan urutan pekerja anda menggunakan kunci putaran.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Lag dalam OpenCV VideoCapture Disebabkan oleh Pengumpulan Penampan Tangkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn