OpenCV 学习笔记 06 SIFT使用中出现版权问题error: (-213:The function/feature is not implemented)

1 错误原因

1.1 报错全部信息:

cv2.error: OpenCV(4.0.1) D:\Build\OpenCV\opencv_contrib-4.0.1\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'

1.2 报错信息分解:

1、  cv2.error: OpenCV(4.0.1) D:\Build\OpenCV\opencv_contrib-4.0.1\modules\xfeatures2d\src\sift.cpp:1207:

错位代码定位

2、  error: (-213:The function/feature is not implemented)

error 代号,函数 / 功能无法实现

3、 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'

error 信息,该算法(SIFT)已经获得专利,在此配置中不包括,设置 OPENCV_ENABLE_NONFREE CMake 选项并在函数 ' cv :: xfeatures2d :: SIFT :: create ' 中重建库

2 修缮工程(守城)

该修改工程属于消极防御,记为守城之策。

2.1 方案一:安装opencv-contrib-python

采用 opencv-contrib-python 而非 opencv-python 。在 opencv-contrib-python 版本中含有额外模块( Extra modules ),而 opencv-python 版本中只含有基础模块。

网上有人说是 SIFT 申请了算法专利保护,所以就将 SIFT 放置在了 Extra modules 模块中,故安装 opencv-contrib-python 是能用的。

当然这个说法也是对的,官网【点击查看】上确实看到 Extra modules 中包含有  xfeatures2d. Extra 2D Features Framework 函数 / 功能。

扫描二维码关注公众号,回复: 5472736 查看本文章

2.2 方案二:版本问题

有人按照方案一操作,依据不可行,所以又出现了版本问题,确切地说 opencv-contrib-python 3.4.3.18 之前是有效的因为我在寻找解决办法时,好多解决办法都是降低版本至 3.4.3.16。完美解决该问题。但 - 但 - - 但 - - - 但这是2019 年 03 月 09 日。

由于我想的是越高的版本其算法应该会越好,bug 应该也越小。所以不想降低版本来实施运算;所以这个解决方案没有采用。

网上到处都是赋值粘贴的,也不注明出处。

2.3 方案三:按照报错信息去解决

写下一段插曲,算是反思吧。

查找原因顺序是,

1、先检索了报错代码,出现了方案一和方案二中的问题解决方案,这种方案撰写时间是在2018年下半年和2019年出现的,虽然并不是库文件版本越新越好,但是新版本的迭代优化总归是有所成效的。所以没有采用这些方案。

2、检索报错信息中的解决方案:Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'。出现了惊人的效果,真正的解决措施才徐徐拉开序幕.....

该修缮工程比较大,兹另起章节,详见下段 3。

3 修缮工程(攻城)

该修缮工程(实为上文的方案 3 ,在此段展开撰述)为积极攻伐,属为攻城之计。

猜你喜欢

转载自www.cnblogs.com/gengyi/p/10499964.html