有人可以向我解释为什么 OpenCV 无法使用 C++ API 打开 .avi 文件,而是使用 C API 打开它吗?
下面是两个代码片段:
C++:
Mat source;
VideoCapture stream("Video.avi");
if (!stream.isOpened()){
std::cout << "Stream cannot be opened" << std::endl;
return -1;
}
while(1)
if(!stream.read(source)) {
std::cout << "Error reading video frame" << endl;
}
imshow("Source", source);
这无法打开 Video.avi,并且一次又一次打印“读取视频帧时出错”。ffmpeg.dll 在路径中,我还安装了 ffdshow。
C:
CvCapture* stream = cvCreateFileCapture( "Video.avi" );
IplImage* source;
while(1) {
source = cvQueryFrame( stream );
if( !source ) printf("\n Problem");
Mat src(source);
imshow("source", src);
if(waitKey(1) >= 0) break;
}
这将毫无问题地打开 Video.avi。
谢谢你的帮助 !
PS。也许值得一提的是,Video.avi 本身是使用 OpenCV 创建的。