Ubuntu16.04、Python3.6下安装opencv4遇到的问题

1.安装opencv

在网上搜索Ubuntu16.04下安装opencv4想必一定搜到大把的编译源码安装opencv的教程,其实安装opencv只需一句命令:

pip3 install opencv-python

说实在我着实没想明白为什么那么多人要编译源码安装呢。。。

2.python3.6中导入opencv库

终端敲入python3.6后输入

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文件

gedit ~/.bashrc

在末尾将这句注释掉

source /opt/ros/kinetic/setup.bash

使该环境变量在当前终端生效生效:

source ~/.bashrc

这样就可以正确使用python3的opencv包,可以取消注释source /opt/ros/kinetic/setup.bash来使用ROS。
但是,这确实意味着无法在同一环境中使用ROS和python3
不过目前ROS1只支持python2,应该在ROS2.0才会支持到python3

导入opencv后查看opencv版本:

print(cv2.__version__)

输出:4.2.0

3.在Python3.6虚拟环境中import cv2及遇到的问题

首先在虚拟环境中导入opencv需要链接到opencv的路径,执行命令查找cv2.cpython-36m-x86_64-linux-gnu.so的位置:

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

你可能感兴趣的:(ubuntu)