前景提要
前几天在编程的时候需要用到SURF算法,按照网上的提示,我用到了
surf = cv2.xfeatures2d.SURF_create()
然后报错 ‘’module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘’,显示找不到xfeatures2d
随后在网上翻箱倒柜找了一天才顺利解决
报错时相关环境配置
win10
python:3.11
opencv-contrib-python:4.9.0.80
opencv-python:4.9.0.80
(后面会发现这些版本太高了...)
解决方案
尝试一:
首先我查找网上的资料显示SURF算法被注册专利了,后面就没被包含在opencv里面了
需要对库版本降级
^^^注意你的python版本也不能太高了,必须3.7(包含)以下^^^
像我python版本太高了就又去下了一个3.7的
开干!卸载原来的opencv-contrib-python和opencv-python
下载3.4.2.16的版本,我是在pycharm里面直接下的。如果搞不成,那就去自己手动装吧,下面代码是手动安装可能会用到的(注意两个等于号前后不要打空格,我看网上有的代码打错了)
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16
如果幸运的话,降完你就可以运行了。But我还是不行...
但是你鼠标点上去他能看见xfeatures2d整个文件夹的内容,很迷
尝试二:
然后我又去搜,有人说3.4.2.16不行的话试试3.4.2.17
我又去下17,然后还是不行(麻了.jpg)
依然报错 ‘’module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘’
尝试三:
后面我折腾半天又换回3.4.2.16版本了(还是看网上好多人这个版本成功了)
看见有人说尝试把opencv-python卸载了试试,结果卸载完直接报错“No module named ‘cv2’”
折腾半天他就是找不到cv2
尝试四:
最后我看到一帖子说要先安装opencv-python,然后再安装opencv-contrib-python
虽然我不明白这是为什么,但它竟然跑起来了....神奇
解决问题时环境配置
python:3.7
opencv-python:3.4.2.16
opencv-contrib-python:3.4.2.16