Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menangani Lag Tangkapan Video yang Disebabkan oleh Penampan Tangkapan Penuh dalam OpenCV?
Merakam strim video mjpeg daripada kamera web menggunakan VideoCapture OpenCV boleh mengakibatkan ketinggalan yang ketara jika benang tangkap membaca bingkai pada kadar yang lebih rendah daripada kadar bingkai suapan webcam. Ini disebabkan oleh pengumpulan bingkai dalam penimbal tangkapan sehingga penimbal disiram.
Untuk mengepam penimbal tangkapan secara manual, anda boleh menetapkan sifat CV_CAP_PROP_BUFFERSIZE objek VideoCapture. Ini akan mengehadkan bilangan bingkai yang disimpan dalam penimbal dalaman. Walau bagaimanapun, pilihan ini hanya disokong untuk perkakasan bahagian belakang tertentu.
Jika tetapan saiz penimbal tidak menyelesaikan isu, anda boleh menggunakan teknik hackaround. Ia melibatkan pertanyaan berulang kali pada bingkai sehingga masa yang diambil untuk mendapatkan semula bingkai melebihi ambang tertentu. Jika masa perolehan adalah sangat rendah, ini menunjukkan bahawa bingkai diperoleh daripada penimbal dan harus dibuang.
Satu lagi penyelesaian hackaround ialah mencipta benang berasingan yang terus merebut bingkai pada kelajuan tinggi untuk memastikan penimbal tangkapan kosong. Urutan ini harus menggunakan fungsi cv::VideoCapture.grab() untuk mengelakkan overhed semasa meraih bingkai. Anda boleh menggunakan teknik penyegerakan untuk memastikan benang pekerja membaca bingkai daripada penimbal dengan cara terkawal.
Atas ialah kandungan terperinci Bagaimana untuk Menangani Lag Tangkapan Video yang Disebabkan oleh Penampan Tangkapan Penuh dalam OpenCV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!