Maison >développement back-end >C++ >Comment puis-je réduire le décalage du tampon lors de la capture vidéo avec VideoCapture d'OpenCV ?

Comment puis-je réduire le décalage du tampon lors de la capture vidéo avec VideoCapture d'OpenCV ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 09:57:02494parcourir

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

Buffer Lag dans OpenCV VideoCapture

Introduction

Cet article explore un problème courant rencontré lors de la capture vidéo à l'aide de l'objet VideoCapture d'OpenCV : le décalage dû à la capture tampon. Nous présentons des solutions potentielles, à la fois à partir d'OpenCV et sous forme de hackarounds.

Solution OpenCV

Selon la documentation OpenCV, la taille du tampon de capture peut être définie. Cependant, cette fonctionnalité n'est disponible qu'avec le backend DC1394 v2.x.

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

Dans les versions 3.4 et ultérieures d'OpenCV, la limitation semble avoir été supprimée :

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

Hackaround 1

Si la solution OpenCV échoue, nous pouvons utiliser un hackaround basé sur la mesure du temps nécessaire pour récupérer une image. Si elle est trop courte, la trame a probablement été extraite du tampon et peut être supprimée. Nous continuons à interroger les images jusqu'à ce que le temps dépasse un seuil, indiquant une image à jour.

Hackaround 2

Un autre hackaround consiste à créer un thread séparé pour récupérer en continu des images à grande vitesse, en utilisant cv::VideoCapture.grab(), pour garder le tampon vide. La synchronisation entre les threads principaux et supplémentaires peut être réalisée à l'aide d'un spin-lock.

Conclusion

Bien qu'OpenCV fournisse un paramètre de taille de tampon, sa disponibilité est limitée avec certains backends. Les hackarounds présentés proposent des approches alternatives pour atténuer le décalage du tampon, permettant aux développeurs de capturer des vidéos avec des délais réduits. La solution optimale peut varier en fonction des exigences du système et de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn