OpenCV,捕获的视频比原始相机视频运行得更快!

Posted

技术标签:

【中文标题】OpenCV,捕获的视频比原始相机视频运行得更快!【英文标题】:OpenCV, captured video runs faster than original camera video! 【发布时间】:2010-12-03 16:25:00 【问题描述】:

我正在使用 openCV 从摄像头捕获视频并存储到 avi 文件,问题是当我完成捕获并运行 avi 文件时,视频流看起来非常快......

这里是代码

void main( )

CvCapture *capture = cvCaptureFromCAM( 0 );

int width = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH );
int height = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT );
CvVideoWriter *writer = cvCreateVideoWriter( "myCamCapture.avi",
-1,30, cvSize(  width, height ) );
cvNamedWindow("d", CV_WINDOW_AUTOSIZE);
IplImage *frame = 0;


while( 1 )

    frame = cvQueryFrame( capture );

    cvShowImage("d",frame);
    cvWriteFrame( writer, frame );
    char c = cvWaitKey( 33 );
    if( c == 27 ) break;


cvReleaseCapture( &capture );
cvReleaseVideoWriter( &writer );
cvDestroyWindow( "d" );


    

请帮忙

【问题讨论】:

【参考方案1】:

您是在告诉作者它应该以每秒 30 帧的速度播放。因此,如果您实际捕捉每秒 15 帧,那么这些帧的播放速度将比实时快。

显示捕获的图像、等待按键以及将其写入文件都需要时间。你需要考虑到这一点。您可以尝试预先捕获视频,在视频发生时测量实际的 FPS,然后使用该值编写 AVI。

【讨论】:

您的建议对我来说似乎是合理的,但您能否让我更清楚您的意思是什么:>【参考方案2】:

您还可以使用 cvGetCaptureProperty(CV_CAP_PROP_FPS ) 来询问相机生成帧的帧速率,然后在延迟循环中使用 1000/fps 而不是 33。

【讨论】:

以上是关于OpenCV,捕获的视频比原始相机视频运行得更快!的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV-python视频入门

在android中使用opencv捕获视频帧

在 OpenCV 中更改相机设置

从火线摄像机捕获视频

Opencv c++:如何按时间分割视频?

OpenCV 多线程 (Windows/.NET) 从视频捕获延迟几秒钟