Ubuntu16.0四、Python3.6下安裝opencv4遇到的問題

1.安裝opencv

在網上搜索Ubuntu16.04下安裝opencv4想必必定搜到大把的編譯源碼安裝opencv的教程,其實安裝opencv只需一句命令:python

pip3 install opencv-python

說實在我着實沒想明白爲何那麼多人要編譯源碼安裝呢。。。linux

2.python3.6中導入opencv庫

終端敲入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源碼

3.在Python3.6虛擬環境中import cv2及遇到的問題

首先在虛擬環境中導入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
相關文章
相關標籤/搜索