###### tags: `Raspberry Pi` `Raspbian` `C++` `OpenCV` `軟體安裝` `IoT` # **在Raspbian上安裝OpenCV** ## 硬體 Raspberry Pi 3 | | Raspberry Pi 3| |:---:|:-------| |SoC|Broadcom BCM2837(CPU,GPU DSP和SDRAM、USB) |CPU|ARM Cortex-A53 64位元 (ARMv8系列) 1.2GHz (四核心) |GPU|Broadcom VideoCore IV[43], OpenGL ES 2.0, 1080p 30 h.264/MPEG-4 AVC高畫質解碼器 |記憶體|1024 MB (LPDDR2) |影像輸出|畫面用RCA端子(PAL &amp; NTSC)、HDMI,HDMI介面可使用14種解析度,分別從640×350到1920×1200之間 |板載儲存|MicroSD卡插槽 |網路介面|10/100Mbps 乙太網介面(RJ45介面),支援802.11n無線網路及藍牙4.1 --- ## 軟體 OpenCV 3.1.0 OpenCV的全稱是Open Source Computer Vision Library,是一個跨平台的電腦視覺庫。OpenCV是由英特爾公司發起並參與開發,以BSD授權條款授權發行,可以在商業和研究領域中免費使用。OpenCV可用於開發實時的圖像處理、電腦視覺以及模式識別程式。該程式庫也可以使用英特爾公司的IPP進行加速處理。 OpenCV可用於解決如下領域的問題: + 人機互動 + 物體識別 + 圖像分割 + 人臉識別 + 動作識別 + 運動跟蹤 + 機器人 |OpenCV|可使用| |:---:|:---| |程式語言|C\C++、Python、Java、MATLAB/OCTAVE、C#、Ch、Ruby、CUDA| |安裝環境|Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux、Mac OS等| OpenCV目前最新有2.4.13和3.1.0兩種版本,第2版的更新是為了讓以前的開發的程式能夠執行並慢慢轉換到第3版,因此目前以**第3版(3.X.X)為主**。 ### [OpenCV下載](http://opencv.org/downloads.html) --- ## 安裝Raspbian ### 建置PI並安裝Raspbian([參考](https://hackmd.io/s/SyREPtoK)) --- ### 安裝OpenCV **1. 更新套件清單並升級:** ``` sudo apt-get update sudo apt-get dist-upgrade -y reboot ``` update: 系統將現有的 Package 升級, 如果有相依性的問題, 而此相依性 需要安裝其它新的 Package 或 影響到其它 Package 的相依性時, 此 Package 就不會被升級, 會保留下來。 dist-upgrade: 可以聰明的解決相依性的問題, 如果有相依性問題, 需要 安裝/移除 新的 Package, 就會試著去 安裝/移除 它。 (所以通常這個會被認為是有點風險的升級) -y:對所有詢問都作肯定的回答,同時不作任何提示 **2. 安裝Opencv套件** + **編譯器:** `sudo apt-get install build-essential` + **必要套件:** `sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libv4l-dev` + **選擇性套件:** `sudo apt-get install python-dev python-numpy libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev libtbb2 libtbb-dev` |套件名稱|套件說明| |:---:|:---| |libgtk2.0-dev|圖形視窗程式庫| |libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libv41-dev|音訊視訊的編解碼、錄製、轉換、串流| |python-dev python-numpy|python相關| |libjpeg-dev libpng-dev libtiff-dev libjasper-dev|圖片格式| |libdc1394-22-dev|IEEE 1934相機介面(請裝)| |libtbb2 libtbb-dev|[TBB](https://www.threadingbuildingblocks.org/download)是C/C++平行處理程式庫,可讓執行速度加快,但**raspbian沒有這套件**| ++編譯器與必要套件一定要裝++,選擇性套件可裝可不裝。 **3.下載並解壓縮OpenCV(2選1)** + 輸入指令 ``` wget https://github.com/Itseez/opencv/archive/3.1.0.zip unzip 3.1.0.zip ``` + 進[官網](http://opencv.org/)下載 `unzip 3.1.0.zip` ![](https://i.imgur.com/yvDGrJe.png) ![](https://i.imgur.com/V0g180O.png) **4.進入OpenCV資料夾,新增一個資料夾並進入** ``` cd opencv-3.1.0 mkdir build cd build ``` **5.執行cmake生產建置需要的設定檔** `cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_TBB=ON -D WITH_TBB=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..` TBB設置版本 ![](https://i.imgur.com/Z9D97Dx.png) 設定成功 ![](https://i.imgur.com/4CqSuJs.png) `-D BUILD_TBB=ON` TBB平行處理程式庫藉由這裡裝,但是版本通常較舊。 **6.開始建置** `make -j4` 參數「-j4」可充分利用四個核心執行。 **7.安裝** `sudo make install` **8.執行指令更新程式庫** `sudo ldconfig` **9.檢查OpenCV版本** `pkg-config --modversion opencv` ![](https://i.imgur.com/NtNC8US.png) **10.測試OpenCV(以C++為例,使用圖檔test.png)** ``` #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main(){ Mat image = imread("test.png", -1); imshow("test", image); waitKey(0); return 0; } ``` **11.編譯和執行** + 編譯(2選1) ``` g++ -lopencv_core -lopencv_highgui -lopencv_imgcodecs tes.cpp g++ `pkg-config --libs opencv` test.cpp ``` + 執行 `./a.out` ![](https://i.imgur.com/l0uvGDJ.png) --- 如出現錯誤如下 OpenCV : libopencv_core.so.2.4: cannot open shared object file: No such fileor directory 執行程式前請先輸入: `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib` --- ## 參考文章 http://yehnan.blogspot.tw/2015/12/raspberry-piraspbianopencv.html