问题描述
使用OpenCV中的VideoCapture类读取本地avi视频时,使用如下代码行
VideoCapture cap("H:\\YChen\\learn\\Release\\data\\baby.avi");
if (!cap.isOpened())
{
return -1;
}
调试发现,isOpen()函数始终返回false,无法正常读取。VideoCapture cap(“H:\YChen\learn\Release\data\baby.avi”)语句替换成VideoCapture cap(CAP_DSHOW)语句可正常读取摄像头中的数据。将对应的opencv_ffmpeg342_64.dll文件拷入对应的生成exe目录下,对应语句仍返回false。程序编译为64位版本,使用的OpenCV库版本为3.4.2。
解决方法
将对应的读取视频代码更换为下列代码
string video_path = R"(H:\YChen\learn\Release\data\baby.avi)";
VideoCapture cap(video_path);
if (!cap.isOpened())
{
cout << "open file failed" << endl;
return;
}
问题解决。可以正常读取视频,isOpen()函数返回true值。