解决Error: Assertion failed (chunk.m_size <= 0xFFFF)和Set OPENCV_ENABLE_NONFREE CMake option问题

解决低版本opencv无法读取大容量视频和高版本opencv无法使用SIFT、SURF算法的问题。


解决了
Error: Assertion failed (chunk.m_size <= 0xFFFF) 问题

Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function ‘cv::xfeatures2d::SIFT::create’ 问题


解决办法:
高版本的opencv 搭配 低版本的opencv-contrib


问题1(无法读容量大视频):

最近读取视频,结果就报错了。

OpenCV(3.4.1) Error: Assertion failed (chunk.m_size <= 0xFFFF) in cv::AVIReadContainer::readFrame, file C:\projects\opencv-python\opencv\modules\videoio\src\container_avi.cpp, line 514
traceback(most recent call last):
cv2.error:OpenCV(3.4.1)  C:\projects\opencv-python\opencv\modules\videoio\src\container_avi.cpp, line 514: error:(-215) chunk.m_size <=0xFFFF in function cv::AVIReadContainer::readFrame

在这里插入图片描述
看了一下别人如何解决的,发现是视频容量太大了,换了容量小一点的视频就可以正常读取。但是,我c盘里没有projects文件夹,也找不到container_avi.cpp文件,就无法参考这个方法操作别人的解决方法

解决方法:

卸载现有版本的opencv:pip uninstall opencv
下载新版本的opencv:按照这个方法安装opencv(点这个链接)但是记得选新版本的opencv,不要选这个链接里说的3.4.1.15版本,不然还是读取不了容量大的视频。
新版本的opencv因为专利用不了的函数后面有办法解决。


问题2(无法使用SIFT、SURF算法):

我安装了4.4.0.46的opencv-python库和opencv-contrib-python库,然后当我用sift算法时又出现问题了。

cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: 
error: (-213:The function/feature is not implemented) 
This algorithm is patented and is excluded in this configuration; 
Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'

然后我又下了个cmake,不知道怎么去rebuild。

就去查了查python和python-contrib这两个库的不同,意思就是:
SIFT算法已经申请专利,开源OpenCV没有版权,新的OpenCV去掉了这个算法,新版本的opencv无法使用这些算法,而想要使用SIFT、SURF算法可以使用opencv-contrib-python扩展库,但是得用没申请专利之前的版本
ps:(别人的解释:opencv-python 是只包含了主要模块的包,opencv-contrib-python包含了主要模块以及扩展模块,扩展模块主要是包含了一些带专利的收费算法(如shift特征检测)以及一些在测试的新的算法(稳定后会合并到主要模块)。)

但是我安装的4.4.0.46版本的opencv-contrib-python库还是不能使用SIFT算法,就是报以上这个错。

解决方法:

所以我就想着把现在版本的opencv-contrib扩展库卸载掉,安装了个低版本3.4.2.17版本的opencv-contrib扩展库,然后问题就顺利解决了,就可以使用SIFT、SURF等算法了。


现在,我的
opencv-python库版本:4…4.0.46
opencv-contrib-python版本:3.4.2.17

ps:opencv和opencv-contrib不一定要同时安装相同版本~
这样即解决了可以处理大容量的视频,又可以使用SIFT、SURF等算法。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值