Maison >développement back-end >C++ >Comment éliminer le décalage de capture vidéo dans OpenCV ?

Comment éliminer le décalage de capture vidéo dans OpenCV ?

DDD
DDDoriginal
2024-11-07 19:38:02221parcourir

How to Eliminate VideoCapture Lag in OpenCV?

VideoCapture Lag Mitigation

VideoCapture dans OpenCV utilise un tampon pour stocker les images capturées. Bien que ce tampon améliore les performances, il peut entraîner un décalage s'il n'est pas correctement géré.

OpenCV Solution

Pour les configurations matérielles spécifiques, OpenCV propose la propriété CV_CAP_PROP_BUFFERSIZE. En définissant cette propriété, vous pouvez contrôler la taille du tampon, réduisant ainsi l'accumulation d'anciennes images.

Hackaround 1 : Frame Timing Analysis

Ce hackaround surveille l'heure prises pour récupérer une image. Si le temps est considérablement court, la trame est supposée provenir du tampon et est rejetée. Une fois que le temps dépasse un certain seuil, la trame renvoyée est considérée comme à jour.

Hackaround 2 : Thread de récupération de trame continue

Pour éviter l'accumulation de tampon , un thread dédié peut récupérer en continu des images en utilisant grab() à grande vitesse. Lorsque le thread de travail principal a besoin d'un frame, il peut le récupérer à partir de ce thread tampon en utilisant un mécanisme de synchronisation comme un spin-lock.

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