1 错误描述

cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv_contrib\modules\xfeatures2d\src\surf.cpp:1029:
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::SURF::create’

-213: 该功能/特性未实现) 此算法受专利保护,在当前配置中被排除;请在函数’cv::xfeatures2d::SURF::create’中设置OPENCV_ENABLE_NONFREE CMake选项并重新编译库;

2 分析 与解决办法

该错误是由于OpenCV中的SURF算法受专利保护,在默认配置下未启用导致;

该错误表明您尝试使用的SURF(Speeded Up Robust Features)算法在OpenCV中受专利保护,默认配置下未启用。SURF是一种用于计算机视觉中特征检测和描述的算法,由Herbert Bay等人于2006年提出并申请了专利。

2.1 解决办法一:‌安装包含非自由功能的OpenCV版本 (待验证)

  • 卸载当前OpenCV版本:pip uninstall opencv-python
  • 安装包含contrib模块的版本:pip install opencv-contrib-python==4.5.5.62

2.2 解决办法二:‌版本兼容性方案,降低OpenCV版本

OpenCV4.X版本由于sift专利原因已经无法使用,需降低openCV 版本到3.X;

注意;OpenCV版本需要和python版本匹配。例如需创建Python 3.7虚拟环境, opencv-python==3.4.2.16 opencv-contrib-python==3.4.2.16

若需使用OpenCV 3.x版本,需创建Python 3.7虚拟环境,也可以Python 3.6环境 (python版本不要太高,的否则与低版本的opencv不匹配)

conda create -n py37 python=3.7
conda activate py37
conda install opencv-python==3.4.2.16 opencv-contrib-python==3.4.2.16

2.3 解决办法三:‌替代算法

如果不想处理专利问题,可以使用不受专利保护的ORB算法:

orb = cv2.ORB_create()

2.4 解决办法四:‌从源码编译OpenCV(高级用户)

如需从源码编译,请确保:

  • 设置CMake选项:-D OPENCV_ENABLE_NONFREE=ON
  • 指定contrib模块路径:-D OPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐