1. 程式人生 > >基於Ubuntu16.04和Cuda8.0上安裝OpenCV3.1.0

基於Ubuntu16.04和Cuda8.0上安裝OpenCV3.1.0

本博文會介紹如何在Ubuntu16.04上安裝OpenCV3.1.0版本,有些人會有疑問,之前用過這條命令sudo apt-get install python-opencv 安裝OpenCV,也可以使用,但注意通過上面命令安裝的OpenCV不是最新版本的,一般是2.x版本的。

閒話少說,我們下面開始在Ubuntu16.04上安裝OpenCV3.1.0。

Step1:在Ubuntu16.04 安裝一些OpenCV需要的依賴項

首先開啟你的terminal對已安裝的軟體包進行更新和升級:

$sudo apt-get update
#update 是用來同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,獲取最新的軟體包


$sudo apt-get upgrade
#upgrade升級已安裝的所有軟體包,升級之後的版本就是本地索引裡的

下一步安裝一些開發工具:

$sudo apt-get install build-essential cmake pkg-config

OpenCV 是影象處理和計算機視覺的庫。為了方便後面學習影象和視訊的處理,這裡安裝一些必要的庫。

$sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
#以上從磁碟下載圖片的庫
$sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$

sudo apt-get install libxvidcore-dev libx264-dev
#上面兩行命令來安裝用來處理視訊流和從攝像頭採集幀的庫

接下來安裝處理OpenCV GUI 操作的模組——highgui,其實這個模組是依賴於GTK庫的,GTK庫通過下面的命令安裝:

$sudo apt-get install libgtk-3-dev

安裝一些能夠優化或者是提升OpenCV功能的庫,像對矩陣的處理等。

$sudo apt-get install libatlas-base-dev gfortran

安裝python2.7和python3.5類庫的標頭檔案:

$sudo apt-get install python2.7-dev python3.5-dev

PS: linux發行版通常會把類庫的標頭檔案和相關的pkg-config分拆成一個單獨的xxx-dev(el)包。如果你需要安裝源外(第三方)的Python類庫而這個類庫內還有編譯的呼叫Python API的C/C++檔案時,需要安裝python-dev。下面我們會對OpenCV執行cmake,所以次響必須安裝,否則會報錯。

Step2:下載OpenCV原始檔:
下載最新版本的OpenCV zip檔案並解壓。

除了這個之外,我們還需要下載OpenCV_contrib 檔案

對於OpenCV3+來說,一些功能被移到了opencv_contrib裡,像SIFT和SURF,所以我們同樣需要這個資料夾。
注意: opencv 和opencv_contrib的版本必須是一致的,opencv-3.1.0必須和opencv_contrib-3.1.0後面的數字保持一致,這樣編譯的過程才不會出錯。

Step3:設定Python的環境,python2+或者是Python3+
這一步,我們開始設定Python的開發環境,首先讓我們安裝pip

在這介紹一個可以設定Python虛擬環境的工具,virtualenvvirtualenvwrapper。他們可以用來設定獨立的Python環境,對於每一個專案來說,你可以根據需要設定為使用python2.7.12 或者是Python3.5。之前我也接觸過virtualenvvirtualenvwrapper,但是沒有搞清楚怎麼用,所以放棄了。通過這次的再次使用,我感覺到它們是非常好用的工具。當然,你也可以選擇不適用,Ubuntu16.04預設的Python版本是python2.7.12 。

安裝virtualenvvirtualenvwrapper

$sudo pip install virtualenv virtualenvwrapper
$sudo rm -rf ~/get-pip.py ~/.cache/pip

virtualenvvirtualenvwrapper安裝完成之後我們需要升級~/.bashrc檔案。使用vi或者vim開啟~/.bashrc檔案,將下面的行新增到檔案的最後即可。

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

修改~/.bashrc檔案之後,重新載入修改項

source ~/.bashrc

建立python的虛擬環境
使用mkvirtualenv建立python的虛擬環境

使用下面的命令建立python2的虛擬環境:

$mkvirtualenv cv3 -p python2

如果你想建立Python3的虛擬環境,和上面一樣,只不過是把Python2換成Python3,用下面的命令建立。

$mkvirtualenv cv3 -p python3

PS:上面命令中的cv3是你想建立虛擬環境的名字,你可以任意設定成任意的名字,在這我設定成了cv3。同時,你也可以同時用不同的名字設定幾個不同的Python環境,除了cv3,我還設定了另外一個Python的環境keras

下面我們用workon命令去切換Python的虛擬環境:

這裡寫圖片描述

從上圖可以看出,我設定連個Python虛擬環境,一個是python2.7.12版本的keras,另一個是Python3.5.2版本的cv3。如果你想退出虛擬環境,使用deactivate命令,如上圖所示。
PS:當你想在某個虛擬環境下工作時,切記使用workon 名字這個命令,保證在[email protected]前面有(你的虛擬環境的名字)
。例如上圖所示在[email protected]前面有(cv3)或者(keras)的名字

在Python的虛擬環境中安裝Numpy包。
首先進入虛擬環境:workon cv3
使用下面命令安裝numpy的包

$pip install numpy

注意:使用上面的命令一定不要加sudo,使用sudo將不會把numpy包安裝到虛擬環境中,而是安裝到了root。我安裝的時候一直使用sudo導致我不能在虛擬環境中使用numpy,用了好長時間才搞定。

Step4:在Ubuntu16.04上設定並編譯OpenCV
首先進入虛擬環境:workon cv3
確保進入虛擬環境後,我們使用cmake設定build

$cd ~/opencv-3.1.0/
$mkdir build
$cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv3/bin/python \
-D BUILD_EXAMPLES=ON ..

PS:倒數第二行-D PYTHON_EXECUTABLE=~/.virtualenvs/cv3/bin/python \中的cv3一定要和mkvirtualenv cv3 -p python3中的你設定的名字cv3一致。如我想在keras虛擬環境中編譯,我需要改成-D PYTHON_EXECUTABLE=~/.virtualenvs/keras/bin/python \。此處一定要注意。

編譯結束之後。你會看到螢幕上會輸出如下圖的內容。

借鑑別人的
每行括號內顯示的是(ver 3.5.2),那對於python2.7.12的虛擬環境來說,顯示的將會是(ver 2.7.12)。如果你的輸出如上圖所示,繼續進行編譯。繼續在build資料夾下執行:

make (可以加上-j4或者是-j8,根據你GPU的核數定,也可以不加)

make成功之後,執行下面的命令:

$sudo make install
$sudo ldconfig

Step5: 建立連結,opencv安裝完成
在完成sudo make install之後,opencv+python的捆綁檔案將會在/usr/local/lib/python3.5/site-packages/資料夾下。用下面命令驗證:

$ls -l /usr/local/lib/python3.5/site-packages/

如果顯示如下結果,說明已經安裝成功。

total 1972
-rw-r–r– 1 root staff 2016816 Sep 13 17:24 cv2.cpython-35m-x86_64-linux-gnu.so

PS:我是在python3.5的虛擬環境下安裝的,所以安裝完成後的檔案會在/usr/local/lib/python3.5/site-packages/資料夾下,如果你在python2.7.12的虛擬環境下安裝的,去/usr/local/lib/python2.7/site-packages/資料夾下。

修改cv2.cpython-35m-x86_64-linux-gnu.so名字

$cd /usr/local/lib/python3.5/site-packages/
$sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

在對cv2.cpython-35m-x86_64-linux-gnu.so重新命名之後,我們將opencv的捆綁檔案sym-link到Python的虛擬環境中去。

$cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
$ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

Step6: 測試OpenCV
開啟一個新的終端(Terminal),切換到安裝OpenCV的Python虛擬環境中。

Ctrl+Alt+T
$workon cv3
$python
>>>import cv2
>>>cv2.version

如果得到如下圖所示的結果,恭喜你,你已經成功的在Python的虛擬環境中安裝好了OpenCV3.1.0。

這裡寫圖片描述

至此,已經成功的在Ubuntu16.04上安裝了OpenCV3.1.0。可以開始你的OpenCV和Python的學習之旅了。

安裝過程中可能會遇到的問題

問題1:

在執行make命令的時候,可能會在進度的60%左右出現一個錯誤:

error: ‘NppiGraphcutState’ has not been declared

modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/build.make:290: recipe for target ‘modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o’ failed
make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error

原因: GraphCut 在cuda7.5中棄用,而且在cuda8.0中移除了。
解決辦法:修改 ~/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp檔案
把第45行修改成:

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

即在 \#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) 加上 || (CUDART_VERSION >= 8000)

問題2:

執行make時,會在80%左右出現 :

fatal error: hdf5.h: No such file or directory
opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory

原因:找不到hdf5.h的路徑
解決辦法:在opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp 檔案中修改第40行

#include <hdf5.h> 修改成#include "/usr/include/hdf5/serial/hdf5.h"

PS:每次修改檔案後可直接執行make命令,不需要執行make clean。因為執行make clean後會重新從頭編譯,那樣會浪費時間。

相關推薦

基於Ubuntu16.04Cuda8.0安裝OpenCV3.1.0

本博文會介紹如何在Ubuntu16.04上安裝OpenCV3.1.0版本,有些人會有疑問,之前用過這條命令sudo apt-get install python-opencv 安裝OpenCV,也可以使用,但注意通過上面命令安裝的OpenCV不是最新版本的,一般

ubuntu16.04原始碼安裝opencv3.1.0

文章目錄 原始碼準備 安裝依賴 編譯、安裝 測試一下 原始碼準備 下載原始碼,opencv官網,得到 .zip的壓縮檔案(預設在~/Downloads下), 進入Downloads檔案下,解壓

基於Ubuntu16.04kubeadm部署kuernetes

1.部署環境:      2臺虛擬機器,Ubuntu16.04系統。設定A虛擬機器的IP 為A-IP,B虛擬機器的IP為B-IP,並A虛擬機器作為master。 2. A、B兩臺虛擬機器都需要做的部署操作:    &n

Ubuntu16.04+caffe+CUDA8.0+cuDNN v5+opencv3.1.0+matcaffe編譯

Ubuntu16.04+caffe+CUDA8.0+cuDNN v5+opencv3.1.0編譯這篇caffe安裝非常不錯,但是裡面因為時間的原因,有些操作已經不能用了而且原文涉及到一些小問題,小編我是生怕之後自己的ubunutu崩掉,就將其錯誤改正,重新寫了寫。還有就是看得

ubuntu16.04 64位系統安裝QT5.6

一下載安裝包,下載地址:https://download.qt.io/official_releases/qt/5.6/5.6.1/ 這裡只有一個64位的 那麼你需要看一看你的ubuntu系統是不是64位的執行:sudo uname --m 如果顯示x86_64則是64

[計算機視覺]ubuntu16.04安裝opencv3.1.0+Qt5.6.0

ubuntu16.04安裝opencv3.1.0+Qt5.6.0 1、安裝依賴的庫 sudo apt-get install build-essential // 必須的,gcc編

ubuntu16.04安裝opencv3.1.0

1.安裝依賴 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

如何在CentOS 7.5、Ubuntu 18.04Debian 9中安裝Golang 1.11

Golang 是谷歌開發的一種程式語言。由於它的多功能性、簡單性和可靠性,  Golang 已經成為開源社群中最受歡迎的程式語言之一。 準備: 一個虛擬機器中的 CentOS 7 ,  Ubuntu 18.04 LTS ,或者  Debian 9 擴充套件 

UBUNTU18.04下,python3.6安裝OPENCV3.2.0

失敗了無數次了,每次都在CMAKE卡住了,然後找到了一篇文章,用另一種方法成功解決了該問題,下面是我的安裝全過程。 1.按順序安裝 sudo apt-get update sudo apt-get upgrade sudo apt-get install build

Centos7.0安裝Vertica9.1.1

Centos7.0上安裝Vertica9.1.1 1. 主機環境準備 IP 主機名 伺服器配置 Swap分割槽 檔案系統 磁碟大小 掛載點 OS

ubuntu 14.04 64位 安裝Opencv3.1.0 (包含opencv_contrib模組)

寫在前邊: 據官方說法,目前還不是太穩定的演算法模組都在opencv_contrib裡邊,由於不穩定,所以不能在release版本里發行,只有在穩定以後才會放進release裡邊。但是這裡邊有很多我們經常要用的演算法,比如SIFT,SURF等(在xfeatures2d 模組裡邊)。官網提供了說明,可以把op

ubuntu11.10安裝QT5.1.0

今天開始學習QT,首先當然是搭建開發環境了。 QT是個跨平臺的C++介面開發系統,因此在Windows、MacOS、Linux上都可以找到很好的開發工具。我決定先從linux中的開發工具入手。 Nokia賣掉QT之後,現在是digia團隊在維護QT了。目前的QT有兩個

安裝opencv3.1.0

環境:ubuntu16.04 CUDA8.0 python2.7 準備 2.解壓: tar -zxvf opencv3.1.0 3.安裝OpenCV需要的包: GCC 4.4.x or later CMake 2.6 or hig

ubuntu 16.0.4安裝Opencv3.2.0

安裝依賴檔案 注意:這篇文章是之前在Ubuntu下寫的,並沒有完全安裝成功。後來使用的系統變了,現在環境為Linux liushuai-PC 4.9.0-deepin4-amd64 #1 SMP PREEMPT Deepin 4.9.8-4 (2017-

筆記本雙顯示卡ubuntu16.04系統 cuda8.0安裝配置

1 CUDA安裝 1.1 安裝前的檢查 1.1.1 確認具備支援cuda的NVIDIA 顯示卡 輸入lspci | grep -i nvidia,確認計算機搭載Nvidia的獨立顯示卡,並且該型號支援CUDA. https://developer.nvidia.co

Ubuntu16.04 Anaconda 安裝pyth3.6 opencv3.1.0

由於ubuntu14.04/16.04都自帶了python2.7和python3.5,所以無需在安裝python。 如果需要安裝python3.6,則需要重新安裝 由於ubuntu14.04/16.04都自帶了python2.7和python3.5,所以無需在安裝python。 1、檢查

UBUNTU16.04 12.04 安裝samba 共享目錄到windos

轉自https://www.linuxidc.com/Linux/2017-07/145445.htm 16.04版本 1 sudo apt-get install samba 2 sudo apt-get install smbclient 3 修改samba配置檔案/etc/samba/

Ubuntu16.04+gtx1060+cuda8.0+cudnn8.0+tensorflow安裝

折騰了兩天系統安裝和配置,簡單的記錄一下。 linux坑太多,如果有朋友遇到坑,歡迎交流。 1.Ubuntu16.04安裝 1)先去官網找到對應的版本,我這裡安裝的是Ubuntu16.04 ltx

caffe編譯安裝Ubuntu16.04.3+cuda8.0+opencv3.3.0+anaconda3)

然後修改makefile檔案NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) 替換為: NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) 然

ubuntu16.04測試cuda8.0

amp blog 現在 ice 信息 linu asa bin 報錯 今天早上裝上cuda和n-375顯卡,現在來測試下。 1.因為在裝cuda的時候已經把環境變量加入系統中,所以不必像網上說的那樣再加入 2.直接cd到NVIDIA_CUDA-8.0_Samples,mak