[raspberry pi] 編譯OpenCV_contrib
Install OpenCV 3.2 Python/C++ on Raspberry PI
首先先移除舊版本的 libraries
sudo apt-get remove libopencv* sudo apt-get autoremove更新系統
sudo apt-get update sudo apt-get upgrade sudo rpi-update sudo reboot
如果你沒有更新你的系統你會需要更多時間。
更新完後要重新開機。
更新完後要重新開機。
安裝開發工具
sudo apt-get install build-essential cmake cmake-curses-gui pkg-config vim
安裝所需libraries
sudo apt-get install \ libjpeg-dev \ libtiff5-dev \ libjasper-dev \ libpng12-dev \ libavcodec-dev \ libavformat-dev \ libswscale-dev \ libeigen3-dev \ libxvidcore-dev \ libx264-dev \ libgtk2.0-dev
Video4Linux
Python以picamera的方式管理樹莓的相機。 你也可以在OpenCV中使用這個模型,但是你必須抓取圖像到numpy.array,並將數組反映到OpenCV Mat。
要使用raspicam的標準抓取影像循環cv2.VideoCapture(0),需要使用Video4Linux驅動程序。
- 事前檢查 (執行 sudo raspi-config):
- 開啟相機(
Interfacing Options > Camera
),設定成 Enable 。
設定好之後關機並接上相機,在開機。 - 設定
gpu_mem
的容量Advance Options > Memmory Split
設定成 128 分鐘
- 開啟相機(
- 安裝 v4l library
sudo apt-get -y install libv4l-dev v4l-utils
- 啟用核心模組
sudo modprobe bcm2835-v4l2
- 測試模組
v4l2-ctl --list-devices
應該會看到mmal service 16.1 (platform:bcm2835-v4l2): /dev/video0
- 測試: 嘗試抓取一個frame,並檢查文件
~/test.jpg
v4l2-ctl --set-fmt-video=width=800,height=600,pixelformat=3 v4l2-ctl --stream-mmap=3 --stream-count=1 --stream-to=~/test.jpg
- 訊息:檢查所有可用的控制,如亮度、對比度等:
v4l2-ctl --list-ctrls
將其正常工作將模塊名
bcm2835-v4l2
加到開機時自動啟動的模組列表中/etc/modules-load.d/modules.confsudo vim /etc/modules-load.d/modules.conf
要編輯檔案按 i ,將
bcm2835-v4l2
加到列表中,輸入完畢後先按 Esc ,接著按 Shift + : ,輸入 wq之後按 Enter 退出。添加其他libraries
sudo apt-get install libatlas-base-dev gfortran
設定 Python
在Raspbian Jessie上,Python 2.7和Python 3都可用。
這裡我們針對這兩個Python版本安裝OpenCV 3.2.0。
這裡我們針對這兩個Python版本安裝OpenCV 3.2.0。
安裝 python-dev & numpy
sudo apt-get install python2.7-dev python2-numpy sudo apt-get install python3-dev python3-numpy
開始安裝 OpenCV
下載 OpenCV
請記住,您的剩餘容量最少要有2GB(Linux分區)。
這裡我們安裝在/ home / pi / Download中。
這裡我們安裝在/ home / pi / Download中。
mkdir /home/pi/Download/opencv cd /home/pi/Download/opencv wget https://github.com/opencv/opencv/archive/3.2.0.zip -O opencv_source.zip wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip -O opencv_contrib.zip
我們將要安裝 opencv_contrib ,即使這個repo包含新的模塊,通常也沒有穩定的API,而且它們沒有經過很好的測試。
解壓縮檔案
cd /home/pi/Download/opencv unzip opencv_source.zip unzip opencv_contrib.zip
編譯 & 安裝 OpenCV
要為C ++,Python2和Python3編譯和安裝OpenCV,我們需要使用CMake。 OpenCV有很多選項可以在編譯時選擇。
您也可以使用命令行開關和/或使用 ccmake(即基於CMake的用戶界面)來選擇選項。
您也可以使用命令行開關和/或使用 ccmake(即基於CMake的用戶界面)來選擇選項。
建立一個新的工作目錄
cd /home/pi/Download/opencv/opencv-3.2.0 mkdir build cd build
使用命令行開關設定您的配置
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_WITH_DEBUG_INFO=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_EXAMPLES=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_opencv_ts=OFF \ -D BUILD_PERF_TESTS=OFF \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \ -D ENABLE_NEON=ON \ -D WITH_LIBV4L=ON \ ../
CMake應該會開始建立你的配置,等待幾分鐘後你會看見:
.....
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/usbmem/opencv/opencv-3.2.0/build
如果沒有看見
查看 MakeError 得知哪邊有問題。
Generating done
那就是中間有發生問題。查看 MakeError 得知哪邊有問題。
如果配置完成,就可以進行下一個步驟了。
使用CMake TextGUI查看/修改配置
您可以從上面更改某些項目的開關,也可以使用 ccmake 來配置所有可用的選項
$ ccmake ../ Page 1 of .. ANT_EXECUTABLE ANT_EXECUTABLE-NOTFOUND BUILD_CUDA_STUBS OFF BUILD_DOCS OFF BUILD_EXAMPLES OFF BUILD_JASPER ON BUILD_JPEG ON BUILD_LIBPROTOBUF_FROM_SOURCES OFF BUILD_OPENEXR OFF ... more options here .... Press [enter] to edit option Press [c] to configure Press [h] for help Press [q] to quit without generating Press [t] to toggle advanced mode (Currently Off)
查看這個清單且更改你需要的選項
當完成所有選項配置後按 c 。
若沒問題可以按 g 配置makefile。
若沒問題可以按 g 配置makefile。
編譯 OpenCV
可以利用
-jn
在n個核心上面編譯make -j4
編譯過程需要很長時間...如果出現錯誤,將會停止,否則大約2小時後(在Rasperry 3上),您將看到:
[100%] Built target ...
安裝 OpenCV
這個步驟很快就會進行完成了
sudo make install sudo ldconfig
恭喜,您的Raspberry PI已經安裝好了!
在預設情況下,檔案會被安裝在:
在預設情況下,檔案會被安裝在:
/usr/local/lib/libcv* /usr/local/lib/python2.7/dist-packages/cv* /usr/local/lib/python3.4/dist-packages/cv* /usr/local/include/opencv2/ /usr/local/bin/opencv_* /usr/local/share/OpenCV/
測試安裝
利用python 查看版本
$ python3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> print (cv2.__version__) 3.2.0 >>>
測試 C++
測試程式碼,創建一個檔案
test.cpp
#include <stdio.h> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> using namespace cv; using namespace std; int main(int argc,char ** argv) { VideoCapture cap(0); if (!cap.isOpened()) { cerr << "ERROR: Unable to open the camera" << endl; return 0; } Mat frame; cout << "Start grabbing, press a key on Live window to terminate" << endl; while(1) { cap >> frame; if (frame.empty()) { cerr << "ERROR: Unable to grab from the camera" << endl; break; } imshow("Live",frame); int key = cv::waitKey(5); key = (key==255) ? -1 : key; //#Solve bug in 3.2.0 if (key>=0) break; } cout << "Closing the camera" << endl; cap.release(); destroyAllWindows(); cout << "bye!" <<endl; return 0; }
編譯指令如下:
g++ $(pkg-config --libs --cflags opencv) -o test test.cpp
執行檔案 ./test 就會看見相機開啟,如果想要看更過範例可以在
/usr/local/share/OpenCV/samples/
裡查看。
如果相機打不開,請先確認相機是否有連接成功,若未連接成功,要關機接好再重新啟動喔!
參考資料:http://pklab.net/?id=392&lang=EN
http://open-rotorman.blogspot.tw/2014/06/raspberry-pi-raspberry-pi-devvideo0.html
https://importgeek.wordpress.com/2016/08/27/install-and-configure-opencv-in-code-blocks/
留言
張貼留言