本人在anaconda+python3.9+opencv4.4.X的环境下,使用surf和sift函数时,会报出包括如下的错误:
AttributeError: module 'cv2' has no attribute 'xfeatures2d'
在网上搜索解决方案发现,在补个包的基础上,由于版权问题,会进一步报出如下错误:
OpenCV(3.4.3) 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’
故而大佬们建议安装3.4.2.16这个版本的opencv:
module 'cv2.cv2' has no attribute 'xfeatures2d'(问题已解决,亲测有效!)_XRRHH的博客-CSDN博客_cv2.xfeatures2d
但似乎是由于使用的是anaconda的关系,无法搜索到对应的包。看评论也有很多更低版本的opencv同样无法正常使用这个包,所以暂时放弃随意找个低版本的包安装的想法.
最后在一个评论区找到大佬推荐的网址:
opencv - sift = cv2.xfeatures2d.SIFT_create() not working even though have contrib installed - Stack Overflow
里面提到anaconda用户可以使用如下命令来安装cv2 3.4.1以及所有需要的包
conda install -c menpo opencv
但是出现了如下错误:
报错显示是由于我的python版本太高,所以我重新创建了一个名为Opencv_Pytorch的环境,python版本为3.7(不要用python3.8!!!!亲测会安装opencv4.0.1!!!)
1)新建环境Opencv_Pytorch
conda create -n Opencv_Pytorch python=3.7
2)激活环境
conda activate Opencv_Pytorch
3)按照上述方法完成安装
conda install -c menpo opencv
下图可以看出安装opencv-3.4.2
按照上述操作完成后,即可正常使用sift函数
————————————2022/4/6 更新——————————————————
我目前测试使用menpo已经更新为opencv4.XXX了,如果已经创建了虚拟环境,建议直接用pip 安装:
pip install opencv-contrib-python==3.4.2.17