'Hello world'视频节目无效

时间:2011-12-02 14:02:49

标签: c opencv

我买了OpenCV书,第一个视频节目没有用。在进一步研究之前,我想知道我的系统是否有问题。这是一个非常简单的程序,几乎没有调试。

#include "highgui.h"

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" );
}

它正常编译,但在运行时,程序只需打开一个白色窗口几秒钟然后关闭。显然,没有错误看起来像是弃用警告。可能有什么不对?

k♥t ./demo /opt/Media/Vídeos/Docs/Connections/Connections/02\ -\ Death\ in\ the\ Morning.avi 
Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
k♥t 

编辑:抱歉所有的大惊小怪,这只是一个错字。现在修复了。

3 个答案:

答案 0 :(得分:1)

我在您传递的文件名中看到很多空格作为参数,并且您混合了正向和反向斜杠。请验证路径和文件名是否有效。

答案 1 :(得分:1)

虽然通常你可以用向后的斜线逃脱空间,但有时OpenCV可能会很挑剔。我建议将视频重命名为没有空格的名称,甚至可能在测试时将其复制到与程序相同的目录中。

如果您对avi文件有进一步的问题,可以查看this similar question以及链接的教程:http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV

答案 2 :(得分:1)

添加安全检查!始终验证您正在呼叫的功能是否成功:

CvCapture* capture = cvCreateFileCapture( argv[1] );
if (!capture)
{
    // Print error message! Failed to load file
}

可能是因为无法加载文件。