我使用相同的代码和相同的视频并在两个环境中进行了测试。首先我在" Opencv3.1.0 + windows(ubuntu)+ VS2015"上测试,没有错误。但是当我使用" opencv3.4.1 + MacOS + Clion",我收到错误:
Unexpected list type. Expected: hdrl. Got: movi.
OpenCV(3.4.1) Error: Assertion failed (chunk.m_size <= 0xFFFF) in readFrame, file /tmp/opencv-20180307-60086-ryy1b3/opencv-3.4.1/modules/videoio/src/container_avi.cpp, line 514
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: OpenCV(3.4.1) /tmp/opencv-20180307-60086-ryy1b3/opencv-3.4.1/modules/videoio/src/container_avi.cpp:514: error: (-215) chunk.m_size <= 0xFFFF in function readFrame
测试代码:
VideoCapture cap("test.avi");
if(!cap.isOpened())
{
cout << "error" << endl;
return -1;
}
Mat img;
double rate = cap.get(CV_CAP_PROP_FPS);
cout << rate << endl;
int total_rate = cap.get(CV_CAP_PROP_FRAME_COUNT);
cout << total_rate << endl;
while (true) {
if(!cap.read(img)) break;
}
如何解决问题以及为什么?感谢。
答案 0 :(得分:1)
也许不是最好的解决方案,但是用“.mp4”或“.mkv”更改扩展名“.avi”是我的工作。问题可能在于opencv lib
答案 1 :(得分:1)
OpenCV最高版本3.4具有读取AVI文件格式的问题。尝试使用更高版本来解决该问题。
答案 2 :(得分:0)
您使用的OpenCV版本中可能存在错误。您可能应该使用其他版本。