一、问题描述
在学习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新手,很多东西都摸不着地方,会发现我本来只想画个图,遇到一个问题,解决了一半又出现了一个问题,然后一个一个一个个的,远到已经不知道自己开始要干嘛了,然后不断搜索,在很多回答中不断尝试从中找出有用的方法,然后再一点点回来。。哭哭哭
感谢搜索过程中各位大佬分享的经验,搜得太多了,就不引用了,如果我能解决你的问题,快给我点赞,也希望大家能多多耐心分享,互相帮助,笔芯。