python的版本问题与opencv的版本问题可能是初学python图像处理时最令人头痛的问题,社区里或者是git上、书本上可以找到的demo有python2写的,也有python3写的,不过相对来说python的版本差异不太影响理解代码,无非是名字换一换、语法变一变。最头大的是opencv的版本,opencv2与opencv3的差异不小,很多函数都有变动,如果是opencv2和3的版本问题,那跑别人的demo都需要一番功夫研究库里函数的功能和使用方法,甚至把代码版本“翻译”过来,实在是很不方便。
笔者最初也一直被opencv的版本问题困扰,近期发现了一种完美解决opencv2和3共存的方法,利用Anaconda对python包的管理,创建多个python环境,就可以在不同的环境中安装不同版本的opencv,只不过这篇博文是在Windows当中实现的,日后在Ubuntu里尝试过后再分享给大家。
Anaconda是一个专门用来解决python多种不同版本的环境的包管理环境,如上所述,它能够创建多个python的依赖环境,可以对每一个环境内自行配制所需要的依赖。它的安装很简单:
1、到官网或清华大学的镜像站下载安装包:清华大学anaconda镜像 #清华的镜像还是比官网快很多的
2、双击安装文件安装到所需目录即可 #中间的Advanced Options提供了两个选项,第一个是是否将anaconda加入Windows环境变量,建议勾选,这样可以方便在cmd窗口中直接指令调用它。第二个是设置它的默认python版本是3.6
以上操作完成后,系统菜单中会多出以下几个选项:
其中,Anaconda Prompt是anaconda的命令行窗口,Anaconda Navigator是图形界面,都可以进行环境管理操作。
Anaconda安装时包含了python3.6以及很多的依赖,为了验证Anaconda是否安装成功,可以进入Prompt内直接调用python:
安装时我们选择了添加环境变量,所以也可以用Windows的cmd打开,快捷键Win+r打开后输入cmd进入命令行后调用python:
调用成功,而且可以看到python的版本信息是Anaconda,说明安装成功。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda #更改设置为清华源
conda config --set show_channel_urls yes #搜索时显示源地址
conda create -n python27 python=2.7 #-n后是新环境的名字,可以任取,其后是选择python的版本,等于号后就是版本号
Anaconda是以包的形式进行管理的,刚安装完的Anaconda只有一个root环境,相当于一个根目录,是所有其他再创建的环境的root,也就是说root内的依赖会被所有环境共享,所以我们一般不要轻易把包安装在root下,刚安装完后就新建一个环境,上例中新环境名为python27,基于2.7版本的python。
激活一个环境的命令是:
activate python27 #python27是自己创建的环境名
查看当前已有的环境:
conda info -e
上图可以看到已有的三个环境,python27、python3以及root,root后带了星号表示它是一个根目录,另外的是用户创建的环境。
激活root环境的指令可以是:
activate root(或D:\anaconda) #root可以被替换为anaconda的安装目录
退出一个环境的指令时:
deactivate
至此,Anaconda的基本操作就介绍完了。下面就轮到主题:解决opencv2与3的共存。
可以看到,上文中已经提到建立了两个python的环境,一个是2.7版本的名叫python27,一个是3.6版本的名叫python3。希望实现的是在python27这个环境中安装opencv2x,在python3这个环境中安装opencv3x。以下描述的是在python环境中两种安装opencv的方法:
1、到opencv官网下载.exe安装包安装,这个方法需要在安装好后将系统环境变量设置好,此类教程众多,不再赘述。安装完成后,需要做的是将opencv安装目录下.\build\python\2.7\x64\cv2.pyd文件拷贝至Anaconda安装目录下.\envs\python27\Lib\site-packages\这一文件夹中,完成安装和配置,测试:
2、opencv其实还有很多非官方的包,可以直接通过pip或conda安装opencv-python,这目前这一包是3.4版本的opencv。操作十分简单,只需激活python3环境后输入指令:
pip install opencv-python #这是一个基本版的opencv,可以直接安装附带更多模块的opencv-contrib-python
大功告成。具体在开发时,只需先激活特定的python环境,而后命令行输入spyder打开IDE或者使用其他的IDE即可。若环境内还没有spyder这些包,只需使用命令安装:
conda install spyder
诸位若有疑问或有更方便快捷的方法,请评论分享,谢谢!