opencv 3.4.1错误:readFrame中的断言失败(chunk.m_size< = 0xFFFF)

时间:2018-04-10 05:54:45

标签: video-capture opencv3.0

我使用相同的代码和相同的视频并在两个环境中进行了测试。首先我在" 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;
}

如何解决问题以及为什么?感谢。

3 个答案:

答案 0 :(得分:1)

也许不是最好的解决方案,但是用“.mp4”或“.mkv”更改扩展名“.avi”是我的工作。问题可能在于opencv lib

答案 1 :(得分:1)

OpenCV最高版本3.4具有读取AVI文件格式的问题。尝试使用更高版本来解决该问题。

答案 2 :(得分:0)

您使用的OpenCV版本中可能存在错误。您可能应该使用其他版本。