c++ - 使用 opencv 显示视频

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

根据“用 opencv 显示视频”,我遇到了一个小问题。代码是用 c++ 和 visual studio 2008 编写的。

代码如下:

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)。

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

非常感谢你的帮助!

一如既往的谢谢你们

最佳答案

您需要检查 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");
}

关于c++ - 使用 opencv 显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7639237/

相关文章:

c++ - 为什么主函数不能将正确的参数传递给 pthread_creat 函数

c++ - 享元模式和 C++ 模板

C++ 数据库持久化

c++ - Qt开发lib和跨平台截屏是真的吗?

c++ - 将我的服务器响应 char 数组转换为 wchar_t 数组是否是处理客户端收到的服务器消息的正确方法?

c++ - 在 OpenCL 代码中使用 clamp 函数

visual-studio - VS 2k8 在调试停止后不释放文件句柄 : Unable to copy file X to output directory because it is being used by another process

visual-studio-2008 - VS2008 SP1 在调试 XSLT 文件时崩溃

visual-studio-2008 - ZeroMQ 和 Visual C++ 2008 的链接器问题

windows - 为什么 Visual Studio 2008 找不到 afxcontrolbars.h?