解决方案:Error:module ‘cv2’ has no attribute ‘xfeatures2d’(anaconda无法安装opencv-python==3.4.2.16版本时)

1.问题描述:

本人在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同样无法正常使用这个包,所以暂时放弃随意找个低版本的包安装的想法.

2.解决方案:

最后在一个评论区找到大佬推荐的网址:

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

但是出现了如下错误: 

解决方案:Error:module ‘cv2’ has no attribute ‘xfeatures2d’(anaconda无法安装opencv-python==3.4.2.16版本时)_第1张图片

 报错显示是由于我的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

解决方案:Error:module ‘cv2’ has no attribute ‘xfeatures2d’(anaconda无法安装opencv-python==3.4.2.16版本时)_第2张图片

 按照上述操作完成后,即可正常使用sift函数

————————————2022/4/6 更新——————————————————

我目前测试使用menpo已经更新为opencv4.XXX了,如果已经创建了虚拟环境,建议直接用pip 安装:

pip install opencv-contrib-python==3.4.2.17

你可能感兴趣的:(PersonDetector,opencv,python,计算机视觉)