使用opencv显示视频

时间:2011-10-03 18:44:00

标签: c++ visual-studio-2008 visual-c++ opencv

根据“用opencv显示视频”我有一点问题。该代码使用visual studio 2008以c ++编写。

这是代码:

int main( int argc, char** argv ) 
{
    cvNamedWindow( "xample2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( "Micro-dance_2_.avi" );
    IplImage* frame;
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "xample2", frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "xample2" );
}

调试时,程序启动,我可以看到命令窗口和灰色窗口(我想应该显示视频)几毫秒。然后两个窗户关闭。

视觉中调试窗口的输出显示以下内容:

.. 。 (很多加载和卸载的dll) 。 。

程序'[3684] 2aufg4).exe:Native'已退出,代码为0(0x0)。

我不知道我做错了什么......

我非常感谢你的帮助!

总是谢谢你们

2 个答案:

答案 0 :(得分:1)

您需要检查cvCreateFileCapture()的返回并确保其成功加载文件:

#include <cv.h>
#include <highgui.h>

int main(int argc, char** argv) 
{
    cvNamedWindow("xample2", CV_WINDOW_AUTOSIZE);
    CvCapture* capture = cvCreateFileCapture( "Micro-dance_2_.avi" );
    if (!capture)
    {
      std::cout << "!!! cvCreateFileCapture didn't found the file !!!\n";
      return -1; 
    }

    IplImage* frame;
    while (1) 
    {
        frame = cvQueryFrame(capture);
        if(!frame) 
            break;

        cvShowImage("xample2", frame);

        char c = cvWaitKey(33);
        if (c == 27) 
            break;
    }

    cvReleaseCapture(&capture);
    cvDestroyWindow("xample2");
}

答案 1 :(得分:0)

试试这个

int main( int argc, char** argv ) 
{
    cvNamedWindow( "xample2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( "Micro-dance_2_.avi" );
    IplImage* frame;
    if(!cvQueryFrame( capture )){
        std::cout << "Could not open file\n";
        return -1; 
    }
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "xample2", frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "xample2" );
}