之前写了一个用VideoCapture播放视频的小程序,后来发现编译没有错误,但是视频播放到最后会出现Debug Error,也不知道是为什么,然后参考了一下学长的思路,写了一个方法,初步解决了这个问题,但同是又出来了一个新的问题,下面再详细说一下······先上代码:
#include "opencv.hpp"其实主要就是写了一个把视频读入Mat容器的方法cvLoadVideo,然后再一帧一帧把图片取出来imshow,缺点很明了,大的视频根本放不了······,但好歹没有错误了,当成一种思路吧。
using namespace cv;
using namespace std;
vector<Mat> cvLoadVideo(string filename);
int main(int argc, char** argv)
{
char c = NULL;
string name="E:\\1\\0.avi"; //视频路径
vector<Mat> frames = cvLoadVideo(name); //将视频读入容器中
for(int i=0;i<frames.size();++i)
{
Mat frame = frames[i].clone();
imshow("video",frame);
c=waitKey(50);
if(c==27)
break;
frame.release(); //释放clone的Mat类
}
}
vector<Mat> cvLoadVideo(string filename)
{
VideoCapture capture(filename);
//if this fails, try to open as a video camera, through the use of an integer param
vector<Mat> I;
if (!capture.isOpened())
cout<<"--(!)Error loading"<<endl;
for(;;)
{
Mat frame;
capture >> frame;
if(frame.empty())break;
I.push_back(frame.clone());
}
return I;
}