当我在Opencv3.4.1下执行曾经在opencv3.1.0下撰写的程序之后,报错如下
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
开始假设了好多原因,可能是我在Mac上编译,没有可识别avi格式的解码工具,后来测试发现,是因为视频太大导致的,单帧图像太大。因为不知道怎么解决,在网上求助,没有什么好的结果,后来在GitHub 上找到了相关的issue
issue#11126
之前是使用brew在Mac上安装的opencv3.4.1,没有源码,于是卸载掉opencv3.4.1,然后下载源码,采用cmakeGUI进行编译,网上有教程,编译之前注释掉container_avi.cpp
里面的:
CV_Assert(chunk.m_size <= 0xFFFF)
之后Clion完美运行程序。
至于这个异常语句的原因,应该是opencv版本新加的,是为了限制memory的使用,不过如果正常跑视频,忽略掉应该也是可以满足需求的,不会影响大体。
在此感谢Github上各位给的解决办法。