OpenCV Python——surf = cv2.xfeatures2d.SURF_create()报错-213:The function/feature is not implemented)
OpenCV中使用SURF算法时出现错误提示,主要原因是该算法受专利保护且默认未启用。解决方法包括:1)安装包含非自由功能的OpenCV版本;2)降级至OpenCV 3.x版本(需匹配Python 3.6/3.7);3)改用ORB等无专利算法;4)从源码编译时启用OPENCV_ENABLE_NONFREE选项。建议根据实际需求选择解决方案,普通用户推荐使用替代算法或降级方案。
文章目录
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
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)