自行編譯OPENCV
先跟新套件
$ sudo apt-get update
$ sudo apt-get dist-upgrade -y
若是直接安裝現成的套件,指令如下:
$ sudo apt-get install libopencv-dev
建制與編譯所需工具:
$ sudo apt-get install build-essential gcc cmake pkg-config
python相關:
$ sudo apt-get install python python-dev python-numpy
圖形視窗程式庫:
$ sudo apt-get install libgtk2.0-dev
音訊、視訊的編譯碼、錄製、串流:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
圖檔格式
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev
IEEE 1394相機介面:
$ sudo apt-get install libdc1394-22-dev
TBB
$ sudo apt-get install libtbb2 libtbb-dev
大都沒問題,但是Raspbian沒有libtbb2和libtbb-dev這兩個套件,於是也必須自己編譯;照理說這是選用性功能,可有可無,但TBB是C/C++平行處理程式庫,有了它,OpenCV的速度會較快。
到TBB網站,查詢原始碼檔案的網址,下載並解壓縮,得到含原始碼檔案的目錄,切換進去:
$ wget https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20151115oss_src.tgz $ tar zxvf tbb44_20151115oss_src.tgz $ cd tbb44_20151115oss
開始建制,根據這篇,加上參數
$ make tbb CXXFLAGS="-DTBB_USE_GCC_BUILTINS=1 -D__TBB_64BIT_ATOMICS=0"
然後進入子目錄build,裡頭會有兩個目錄存放建置結果,其一以debug結尾、另一個以release結尾,切換到release那一個:
$ cd build $ cd linux_armv7_gcc_cc4.9.2_libc2.19_kernel4.1.13_release
執行tbbvars.sh這支腳本程式檔,它會設定許多環境變數,之後的OpenCV才知道TBB在哪:
$ source tbbvars.sh
搞定TBB後,接著是OpenCV 安裝
$unzip opencv-2.4.9.zip $ cd opencv $mkdir build $cd build
先執行cmake產生建置需要的設定檔:
$ cmake -DWITH_TBB:BOOL=TRUE -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
其中「-DWITH_TBB:BOOL=TRUE「代表我們想要使用TBB,「-D CMAKE_INSTALL_PREFIX=/usr/local」代表之後要安裝的路徑,最後的「..」代表原始碼所在路徑。
然後開始建制:
$make -j4
然後安裝:
$ sudo make install
執行指令更新程式庫:
$ sudo ldconfig
檢查OpenCV的版本:
$ pkg-config --modversion opencv
然後是是撰寫C++程式,顯示一張圖檔。新增檔案test.cpp,準備一張圖檔lena.jpg,程式內容如下:
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char **argv) { Mat image = imread("lena.jpg", CV_LOAD_IMAGE_COLOR); Mat imagegray = imread("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE );//always convert image to the grayscale namedWindow("image",CV_WINDOW_AUTOSIZE);//AUTOSIZE namedWindow("imagegray",CV_WINDOW_NORMAL);//Custom sizes imshow("image",image); imshow("imagegray",imagegray); resizeWindow("imagegray",320,240); waitKey(0); return 0; }
編譯
g++ test.cpp -o test `pkg-config --cflags --libs opencv`
成功如下
參考資料
http://yehnan.blogspot.tw/2015/12/raspberry-piraspbianopencv.html http://blogger.gtwang.org/2015/01/raspberry-pi-install-opencv.html http://stackoverflow.com/questions/9094941/compiling-opencv-in-c
沒有留言:
張貼留言