在網上搜索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