在OpenCV中播放AVI文件

时间:2010-07-15 03:05:47

标签: c++ opencv

我似乎无法使用OpenCV播放我的avi文件。我在Mac上,文件适用于Quicktime和VLC播放器。我曾尝试使用mencoder将其转换为i420,但仍然没有成功。没有出现错误消息,似乎程序自动关闭,我不知道如何调试它。

int main(int argc, char* argv[]) 
{
    cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( argv[1] );
    IplImage* frame;
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "Example2", frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "Example2" );
}

1 个答案:

答案 0 :(得分:0)

好吧,既然你的代码缺少错误检查,可能cvCreateFileCapture()可能存在问题,在你检查函数返回之前你永远不会知道。

无论如何,您应该在此处删除或添加此语句的调试:

if( !frame ) break;

如果在检索文件的第一帧时出现问题,您的应用程序就会放弃并静默退出,给您“没事”的感觉。

将其更改为:

if (!frame) { printf("Uow, huge fail!\n"); break;}

但最重要的是:你为什么不使用cvCaptureFromAVI()? 看看这个:http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV