>백엔드 개발 >C++ >OpenCV VideoCapture에서 캡처 버퍼 누적으로 인한 지연을 극복하는 방법은 무엇입니까?

OpenCV VideoCapture에서 캡처 버퍼 누적으로 인한 지연을 극복하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 12:34:02635검색

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

캡처 버퍼로 인한 OpenCV VideoCapture 지연

파일에 프레임이 축적되어 OpenCV의 VideoCapture에서 지연 문제가 발생했습니다. 캡처 버퍼. 해결 방법으로 버퍼를 빠르게 지우기 위해 30fps에서 버퍼를 읽는 방법을 사용했습니다.

OpenCV 솔루션

OpenCV는 버퍼 크기를 수동으로 설정하는 방법을 제공합니다. :

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

단, 이 솔루션은 DC1394 v에서만 지원됩니다. 2.x 백엔드.

Hackaround 1

다른 접근 방식은 프레임을 검색하는 데 걸리는 시간을 측정하는 것입니다.

  • 시간이 짧은 경우 프레임은 버퍼에서 가져오며 삭제됩니다.
  • 시간이 임계값을 초과하여 버퍼가 비어 있음을 나타낼 때까지 반복합니다.

Hackaround 2

버퍼를 비워두기 위해 cv::VideoCapture.grab()을 사용하여 고속으로 지속적으로 프레임을 가져오는 세 번째 스레드입니다. 스핀 잠금을 사용하여 이 스레드와 작업자 스레드 간의 액세스를 동기화합니다.

위 내용은 OpenCV VideoCapture에서 캡처 버퍼 누적으로 인한 지연을 극복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.