Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 第一次使用open cv无法播放avi文件_Opencv - Fatal编程技术网

Opencv 第一次使用open cv无法播放avi文件

Opencv 第一次使用open cv无法播放avi文件,opencv,Opencv,我用open cv尝试的视频的帧速率是29帧/秒,帧宽是720,高度是480。视频的格式是带有avi包装的DX50 显示的空白窗口名为example2,它会消失 问题是cvcapturefromavi确实返回指针,这就是为什么不打印fail的原因 操作系统窗口7我在我的计算机上尝试使用网络摄像头,而不是使用cvCaptureFromCAM-1的文件,并且您的代码运行良好,这是您应该尝试的 文件a.avi不在可执行文件的路径中,也许您应该首先使用绝对路径来尝试类似C:/MyVideos/a.avi

我用open cv尝试的视频的帧速率是29帧/秒,帧宽是720,高度是480。视频的格式是带有avi包装的DX50

显示的空白窗口名为example2,它会消失

问题是cvcapturefromavi确实返回指针,这就是为什么不打印fail的原因


操作系统窗口7

我在我的计算机上尝试使用网络摄像头,而不是使用cvCaptureFromCAM-1的文件,并且您的代码运行良好,这是您应该尝试的

文件a.avi不在可执行文件的路径中,也许您应该首先使用绝对路径来尝试类似C:/MyVideos/a.avi的内容 我会尝试使用cvCaptureFromFile函数,而不是cvCaptureFromAVI,因为我在API文档OpenCV C 2.1中搜索,没有找到任何cvCaptureFromAVI函数,可能它存在,但不推荐使用或没有文档记录。 PS:您的代码中有一个小错误,为什么在else{}范围中使用cvDestroyWindow,当您在主范围中创建窗口时,它应该在主范围中

PPS:为了便于阅读,请将代码缩进


朱利安,我也有同样的问题。据说问题的出现是因为缺少必要的视频编解码器。建议使用Mencoder对avi文件进行编码,以便使用OpenCV,但这并没有解决我的问题,我仍然无法使用OpenCV 2.3.1播放avi文件


我通过向路径opencv_ffmpeg.dll添加丢失的内容来解决问题。希望它适用于您和面临此问题的人。

如果您将opencv构建到静态库,您会发现bin目录中仍然有一个dll文件opencv\u ffmpegxxxxx.dll。即使您将代码静态链接到opencv,也需要此dll。因此,请确保系统能够找到此dll文件。

我按照您所说的做了,使用了cvcapturefromfile并提供了绝对路径,但仍然无法工作。只有空白窗口。您可以将视频上传到某个地方并给我链接吗?我使用了opencv示例文件夹中的tree.avi
int main()
    {
    cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCaptureFromAVI( "a.avi" );
    IplImage* frame;

    if(!capture)
    {
        printf("fail");
    }
    else
    {

    while(1) 
    {
    frame = cvQueryFrame( capture );
    cvShowImage( "Example2", frame );
    char c = cvWaitKey(40);
    if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "Example2" );
    }
    return 0;
    }