繁体   English   中英

OpenCV,从摄像机捕获并保存到文件

[英]OpenCV, capturing from camera and saving to file

我想在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;
    }
}

先感谢您

1(编辑):根据页面底部附近的此站点 ,有必要致电

cvQueryFrame(capture);

首先,以获得正确的属性。 重试通话

int fps       = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);

然后

2:您可以使用cvWaitKey(毫秒)或只是睡眠。 您如何捕获图像,您的循环是什么样的?

1-并非所有相机都会提供帧速率,这取决于其驱动程序支持的帧速率。

2-要捕获10秒的视频,只需计算出这是多少帧,而不是while(1)-它会一直运行,请执行以下操作。

// assumign you want 10seconds of 3fps = 300 frames total
for (int iframe=0;iframe<300;iframe++) {

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM