1. 程式人生 > >樹莓派系列安裝opevcv3.0教程填坑版(附加快opencv編譯速度教程)

樹莓派系列安裝opevcv3.0教程填坑版(附加快opencv編譯速度教程)

小生深知網路上樹莓派安裝opencv的教程層出不窮,但是基本上都是從其他地方copy的,而且copy的不完全,而且樹莓派下用lena.jpg測試opencv的教程很難找到。雖然網際網路的共享精神值得肯定,但是不負責任的共享對於急於使用樹莓派+opencv的童鞋是極為不負責任的,最近幫學弟在樹莓派3上配opencv3.0,本著科學需要負責和專業,希望大家能不再走彎路,畢竟一次編譯opencv短則10分鐘,長則幾小時,加快編譯速度對初學者來說也是個相對冷門的技術,本文作如下總結。

本文以樹莓派2/3安裝opencv3.0附加python2.7為例,介紹完整流程,請一次就執行完這些流程,期間可能有些步驟耗時很長,所以可以拿本書看看,或者用手機看個劇,整體耗時應該在一部電影的時間左右。

首先進入Raspberry Pi系統,確保樹莓派臉上網路,然後Ctrl + Alt +t開啟命令終端(直接點選終端圖示可能會卡),如果終端視窗沒有出現的話,從頂部工作列可以找到,點開就好。

首先是以下這幾條更新命令,每次單獨執行:

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
然後執行安裝opencv的構建相關命令:
sudo apt-get install build-essential git cmake pkg-config

然後是以下這幾條命令安裝圖片工具包,每次單獨執行(網上有很多一起執行的,但是經常出現問題)

sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libjasper-dev
sudo apt-get install libpng12-dev

ra後是視訊I/O包:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

下面安裝GTK:

sudo apt-get install libgtk2.0-dev

然後安裝優化函式的包:

sudo apt-get install libatlas-base-dev gfortran

然後執行以下命令下載opencv3.0:

cd /home/pi
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0

然後安裝opencv_contrib:

cd /home/pi
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0

然後安裝python開發包:

sudo apt-get install python2.7-dev

然後安裝pip:

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

然後安裝virtualenv virtualenvwrapper:

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

 下面這個步驟不僅僅是命令了,開啟~/.profile檔案,我是使用vim開啟的:

sudo vim ~/.profile(如果不會用vim的話,請使用其他的文字編輯器)

開啟profile後,在這個檔案最後,新增以下內容後儲存退出:

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

然後執行下面這個命令:

source  ~/.profile

然後建立虛擬工作環境並進入:

mkvirtualenv LC
workon LC

一定要確保進去剛剛建立的虛擬環境了,進入虛擬環境的標誌是進去後命令的最前面(綠字前面)都會增加“(LC)”。

下面在虛擬環境中安裝numpy:

pip install numpy
sudo rm -rf ~/.cache/pip/
pip install numpy

一定確保在剛剛的虛擬環境下進行以下操作,如果新開了一個命令列視窗,那麼就依次執行 source ~/.profile 命令和 workon LC 命令進入虛擬環境再執行以下操作。

執行以下命令來設定編譯:

cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D INSTALL_C_EXAMPLES=ON \
 -D INSTALL_PYTHON_EXAMPLES=ON \
 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
 -D BUILD_EXAMPLES=ON ..

執行以下命令開始正式編譯opencv3.0:

make -j56(這個如果報錯就別寫-j56了,寫-j4,主要是為了強行加快opencv編譯速度)

編譯完後進行安裝:

sudo make install

安裝後進行相關配置:

sudo ldconfig

整個流程嚴格走下來就應該已經成功了,可以關掉這個命令列視窗了。

××××××××××××××××××××××××下面是測試opencv的流程×××××××××××××××××××××××××××××××

首先進入虛擬環境:

mkvirtualenv LC
workon LC

然後建立工作目錄:

mkdir ~/opencv-lena
cd ~/opencv-lena
vim DisplayImage.cpp(不會用vim的同學用其他文字編輯器)

然後在這個cpp中複製貼上進去以下程式碼:

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
	if ( argc != 2 )
	{
		printf("usage: DisplayImage.out <Image_Path>\n");
		return -1;
	}
	Mat image;
	image = imread( argv[1], 1 );
	if ( !image.data )
	{
		printf("No image data \n");
		return -1;
	}
	namedWindow("Display Image", WINDOW_AUTOSIZE );
	imshow("Display Image", image);
	waitKey(0);
	return 0;
}
然後儲存退出。

下面建立CMake編譯檔案:

vim CMakeLists.txt

建立後在此檔案下寫入以下內容:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

然後儲存退出。

下面編譯:

cd ~/opencv-lena
cmake .
make

編譯完成後,從網上下載lena.jpg,或者隨便找張圖片,命名為lena.jpg,放在opencv-lena資料夾下。

然後執行程式:

./DisplayImage lena.jpg

如果能顯示出lena.jpg圖片,則測試成功,Cheers~