在网上搜索Ubuntu16.04下安装opencv4想必必定搜到大把的编译源码安装opencv的教程,其实安装opencv只需一句命令:python
pip3 install opencv-python
说实在我着实没想明白为何那么多人要编译源码安装呢。。。linux
终端敲入python3.6后输入bash
import cv2
这时报了个错:importError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so
缘由是我在以前安装了ROS,ROS默认python版本是2.7,这个问题是由ROS添加/opt/ros/kinetic/lib/python2.7/dist-packages到python路径引发的
解决办法:
打开.bashrc文件python2.7
gedit ~/.bashrc
在末尾将这句注释掉code
source /opt/ros/kinetic/setup.bash
使该环境变量在当前终端生效生效教程
source ~/.bashrc
这样就能够正确使用python3的opencv包,能够取消注释source /opt/ros/kinetic/setup.bash来使用ROS。
可是,这确实意味着没法在同一环境中使用ROS和python3
不过目前ROS1只支持python2,应该在ROS2.0才会支持到python3ip
导入opencv后查看opencv版本:get
print(cv2.__version__)
输出:4.2.0源码
首先在虚拟环境中导入opencv须要连接到opencv的路径,执行命令查找cv2.cpython-36m-x86_64-linux-gnu.so的位置:it
sudo find / -name cv2.cpython-36m-x86_64-linux-gnu.so
以后将虚拟环境中opencv连接到上边文件的路径好比:
cd .virtualenv/py36env/lib/python3.6/site-packages sudo ln -s ~/.local/lib/python3.6/site-packages/cv2/cv2.cpython-36m-x86_64-linux-gnu.so cv2.so
或者直接将上边的文件复制到虚拟环境下的包路径(site-packages)也行
在执行完以上步骤后进入虚拟环境启动python3.6后import cv2遇到如下问题
ModuleNotFoundError: No module named 'cv2'
缘由有不少 如下几种方法可能能够解决:
(1)安装opencv的contrib库
pip install opencv-contrib-python
(2)安装python-opencv
sudo apt-get install python-opencv
(3)将cv2.so复制到系统默认安装python的路径下好比
/usr/local/lib/python3.6/dist-packages/cv2/cv2.so