手把手解决opencv无法使用cv.xfeatures2d

一、问题描述

在学习openCV的过程中使用了SIFT的时候,发现书上的代码用不了。

sift=cv.xfeatures2d.SIFT_create()

代码报错:

二、问题原因

算法被申请了专利,能够调用这个程序包的opencv-python-3.4.2.16最高只支持python3.7,因此3.8及以后版本的python的使用者不能调用这个程序包,需要把Python 退回到3.7后,再安装opencv-python-3.4.2.16才能正常调用cv.xfeatures2d。

三、问题解决

3.1  安装Python3.7,需要建立虚拟环境

在pycharm界面打开终端窗口(不熟悉Python的我找了半天)

输入:conda create -n py37 python=3.7

输入y确定,直至安装成功,安装成功后激活输入:activate py37

没有报错代表虚拟环境建立成功。

3.2安装所需程序包

conda install opencv-python==3.4.2.16

conda install opencv-contrib-python==3.4.2.16

安装结束。

3.3、修改自己编译环境中的解释器路径

File-settings-project:opencvmanual-python Interpreter-点击红框中的齿轮形状的设置打开virtualenv Enviroment

在virtualenv Enviroment的Existing enviroment中设置interpreter,将Python环境设置为你刚才下载的虚拟环境py37,具体地址在你安装anaconda的位置下环境中(不知道安到哪可以参考现有环境的地址,譬如我的是安到了D盘software文件夹中D:\Software\anaconda\envs\py37\python.exe)

设置完后点击确认,回到刚才的settings界面,将编译环境变为了Python3.7(py37),至此环境设置完毕。

第四步、重新运行程序,成功?

出现了新的问题,就是新建的编译环境中程序包非常的少,需要添加程序包(pip install)

这已经是下一个问题了,解决到这的时候,我已经想要放弃调用那个cv.xfeatures2d了。

依旧是打开settings,点击+号添加程序包。

第五步:新问题

5.1、添加程序包

搜索numpy程序包,点击下面的install package

5.2升级pip安装程序包

报错:

“WARNING: You are using pip version 21.1.2; however, version 21.2.4 is available”

第一行:下载程序包的pip版本太低需要升级,第二行:提示需要在终端界面输入:

Python -m pip install --upgrade pip 升级pip包

继续报错:进度条进一阵就停了,升级失败(原因:服务器连接超时,使用一下代码即可解决)输入:python -m pip install --upgrade pip -i https://pypi.douban.com/simple

pip升级成功。

继续回到第五步添加numpy程序包

这里有两种方式:

1、还是按照settings中搜索程序包install package安装,可能成功但还有可能报错。

2、pip install numpy -i https://pypi.douban.com/simple 大几率安装成功。

然后按照这种方式把所需的所有程序包安装好后,运行程序,出图。

第六步、哭

同志们我哭了,因为是Python新手,很多东西都摸不着地方,会发现我本来只想画个图,遇到一个问题,解决了一半又出现了一个问题,然后一个一个一个个的,远到已经不知道自己开始要干嘛了,然后不断搜索,在很多回答中不断尝试从中找出有用的方法,然后再一点点回来。。哭哭哭

感谢搜索过程中各位大佬分享的经验,搜得太多了,就不引用了,如果我能解决你的问题,快给我点赞,也希望大家能多多耐心分享,互相帮助,笔芯。

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值