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,捕获的视频比原始相机视频运行得更快!的主要内容,如果未能解决你的问题,请参考以下文章