我正在尝试使用opencv
播放视频(视频是存储在磁盘上的avi文件)。但是,程序会在cap_ffmppeg.cpp
:
if(!ffmpegCapture ||
!icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn))
return 0;
错误是:Access violation reading location
...因此第一次运行capture >> frame
时发生了seg错误。
以下是该计划:
#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 :(得分:1)
如果您使用的是x64。 请使用opencv_ffmpeg245_64.dll这个解决可以解决问题。 或者将opencv_ffmpeg245_64.dll重命名为opencv_ffmpeg245可能会解决问题。
答案 1 :(得分:0)
原来,OpenCV无法播放未压缩的视频。压缩它,一切都很好......不知道为什么原来的问题存在。