我想在openCV中构建一个简单的应用程序,它从相机中捕获视频并将其存储到文件中。问题是:
1-如何访问相机的帧速率。 cvGetCaptureProperty()始终返回FPS值为零。
2-如何控制捕获的时间,例如如何将捕获时间限制为10秒......
这是我的代码
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( 30 );
if( c == 27 ) break;
}
}
提前谢谢
答案 0 :(得分:1)
1(编辑):根据this site near the bottom of the page,有必要致电
cvQueryFrame(capture);
首先是为了获得正确的属性。重试呼叫
int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
之后
2:您可以使用cvWaitKey(毫秒)或只是睡眠。你是如何捕捉图像的,你的循环是什么样的?
答案 1 :(得分:0)
1 - 并非所有相机都会提供帧速率,这取决于其驱动程序支持的内容。
2 - 要捕获10秒的视频,只需计算出这是多少帧,而不是while(1) - 它永远运行,做类似的事情。
// assumign you want 10seconds of 3fps = 300 frames total
for (int iframe=0;iframe<300;iframe++) {
}