前提:ubuntu16下已经安装了ros,ubuntu 16.04自带python2.7和python3.5

一   ubuntu安装python虚拟环境

参考Ubuntu16.04 下 Python3 虚拟环境安装 OpenCV

(1)首先安装 Python 的包管理工具 pip。安装 Python3 的 pip

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py

(2)然后安装模块,这里用python2.7也可以

sudo pip install virtualenv virtualenvwrapper

(3)切换到你需要建立虚拟环境的目录,执行(建立python3的虚拟环境)

virtualenv -p /usr/bin/python3.5 my_env

(4)在该目录下执行,开启虚拟环境

source my_env/bin/activate

(5)在该虚拟环境下执行其他操作

 

二  在虚拟环境下安装python opencv

(1)在pip中可以方便快速的安装opencv-python和opencv-contrib-python,只需要输入两条指令即可:

pip3 install opencv-python #安装opencv
pip3 install opencv-contrib-python #安装opencv的contrib扩展包

如果中途没报错,恭喜安装成功了。

(2)当引入 import cv2会报如下错误,是因为安装ros的时候将配置环境默认了

ubuntu安装的opencv地址在哪 ubuntu安装opencv-python_bash

解决方法:参考

原因分析:ROS安装之后的~/.bashrc文件中多出一句:

source /opt/ros/kinetic/setup.bash

处理方法:建议采用第二种

(1)第一种方法
需要在~/.bashrc文件中增加一行命令,操作步骤为:

sudo gedit ~/.bashrc

部分处理方法是在.bashrc文件中把source /opt/ros/kinetic/setup.bash添加#符号注释掉,但这样势必会造成再次使用ROS时又需要把注释#去掉。
因此查找相关的材料可以在打开的.bashrc文件中的最后增加如下一行:

export PYTHONPATH="/home/li/anaconda2/lib/python3.5/site-packages:$PYTHONPATH"

注意:上面的路径中的userx需要换成你自己的用户名

PYTHONPATH后的/home/userx/anaconda3路径内容需要根据自己的anaconda安装路径来来进行更改,大多数默认的安装。目录都是以上这种情况,只需要更改/userx就行。但是最后得出的结果可能会和之前提到的那种方法产生一样,即运行ROS时需要注释掉这行代码,运行非ROS时需要加上这行代码。而接下来的第二种方法会在python文件中进行处理。

(2)第二种方法

因为是受ROS安装的影响,ROS安装之后会在python pyth中加入:

'/opt/ros/kinetic/lib/python2.7/dist-packages'

而为了解决此问题,可以在需要运行的python文件(即使用import cv2的python文件)中,添加以下代码:

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

注意:一定要保证解决办法那两句代码 import sys sys.path.remove(’/opt/ros/kinetic/lib/python2.7/dist-packages’) 在import cv2之前。这样才能成功
通过这两行代码可以把ROS写入path中的路径给清除,进行可以import anaconda中的cv2包。

注:通过此方法再次import cv2时,问题得以解决,不再报错,但此方法并不一定可以保证在所有的情况下都适用,但还是值得一试滴。