2012-09-26 83 views
1

我试图使用opencv播放视频(视频是存储在磁盘上的avi文件)。然而,程序停止以下行执行的cap_ffmppeg.cpp如何使用opencv播放视频?

if(!ffmpegCapture || 
    !icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn)) 
    return 0; 

的错误是:Access violation reading location ...所以赛格故障发生第一次capture >> frame运行。

下面是程序:

#include<iostream> 
#include<fstream> 
#include<cv.h> 
#include<highgui.h> 
#include<opencv2/nonfree/features2d.hpp> 
using namespace std; 
using namespace cv; 


int main(int argc, char *argv[]) 
{ 
    if (argc <= 1) 
    { 
     printf("Usage: %s video\n", argv[0]); 
     return -1; 
    } 

    VideoCapture capture(argv[1]); 


    if(!capture.isOpened()) 
    { 
     printf("Failed to open the video\n"); 
     return -1; 
    } 

    for(;;) 
    { 
     Mat frame; 
     capture >> frame; // get a new frame from camera 
    } 

    return 0; 
} 

任何想法,我做错了吗?

+0

'cv :: VideoCapture'需要构造器中的字符串,但是您使用的是字符数组。我不确定这是否有效。 你还试过一个绝对路径到你的文件? –

+0

将其更改为'VideoCapture capture(“C:\\ video.avi”);'但问题仍然存在......' – zoran119

+0

好吧,如果'isOpened'检查通过,则访问文件不应该是问题。你有没有尝试过不同的文件? –

回答

0

原来,OpenCV无法播放未压缩的视频。压缩它,一切都很好......不知道为什么存在原始问题。

1

如果您使用的是x64。 请使用opencv_ffmpeg245_64.dll解决这个问题。 或者将opencv_ffmpeg245_64.dll重命名为opencv_ffmpeg245可能会解决问题。