Maison  >  Article  >  développement back-end  >  Comment résoudre le décalage de capture vidéo causé par un tampon de capture complet dans OpenCV ?

Comment résoudre le décalage de capture vidéo causé par un tampon de capture complet dans OpenCV ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 15:31:02782parcourir

How to Address Video Capture Lag Caused by a Full Capture Buffer in OpenCV?

Retard dans la capture vidéo en raison du tampon de capture

Problème

La capture de flux vidéo mjpeg à partir d'une webcam à l'aide de VideoCapture d'OpenCV peut entraîner un décalage important si le fil de capture lit les images à une fréquence inférieure à la fréquence d'images du flux de la webcam. Ceci est dû à l'accumulation d'images dans le tampon de capture jusqu'à ce que le tampon soit vidé.

Solution OpenCV

Pour vider manuellement le tampon de capture, vous pouvez définir la propriété CV_CAP_PROP_BUFFERSIZE de l'objet VideoCapture. Cela limitera le nombre d'images stockées dans le tampon interne. Cependant, cette option n'est prise en charge que pour certains matériels backend.

Hackaround 1

Si la définition de la taille du tampon ne résout pas le problème, vous pouvez utiliser une technique de hackaround. Cela implique d'interroger des images à plusieurs reprises jusqu'à ce que le temps nécessaire pour récupérer une image dépasse un certain seuil. Si le temps de récupération est inhabituellement court, cela indique que la trame a été obtenue à partir du tampon et doit être supprimée.

Hackaround 2

Une autre solution de piratage consiste à créer un thread séparé qui récupère en permanence les images. à grande vitesse pour garder le tampon de capture vide. Ce fil doit utiliser la fonction cv::VideoCapture.grab() pour éviter les frais généraux lors de la capture d'images. Vous pouvez utiliser des techniques de synchronisation pour garantir que le thread de travail lit les trames du tampon de manière contrôlée.

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