最近想在Rpi3上使用opencv ,網路上找到許多方法,有的版本不太符合,經測試後將安裝過程紀錄於此。以下設定以2017-06-21-raspbian-jessie版本為準 ,紅色粗體字表示設定項目 ,藍色粗體字表示指令 ,黑色粗體字表示編輯內容、選擇設定或輸入。
一般若是要安裝現成的套件,可以直接下指令:
sudo apt-get install libopencv-dev
不過得到的OpenCV版本可能較舊,如須叫新版本,須自行下載原始碼自行編譯。
先更新系統
sudo apt-get update
sudo apt-get upgrade
安裝基本編譯工具
sudo apt-get install build-essential cmake gcc pkg-config git
sudo apt-get install libatlas-base-dev gfortran
安裝影像與視訊支援程式庫
sudo apt-get install libjpeg-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
sudo apt-get install libgtk2.0-dev
安裝python以進行編譯工作
sudo apt-get install python2.7-dev python3-dev
下載opencv原始程式碼 (紅字為版本號碼)
cd ~
wget -O opencv-3.3.0.zip.zip https://github.com/Itseez/opencv/archive/3.3.0.zip
wget -O opencv_contrib-3.3.0.zip.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
unzip opencv-3.3.0.zip.zip
unzip opencv_contrib-3.3.0.zip.zip
安裝pytyhon virtualenv工具
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
設定執行環境,編輯~/.profile檔案
echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile
執行以下指令讓.profile生效:
source ~/.profile
建立python的virtualenv 環境
mkvirtualenv cv -p python3
若找不到mkvirtualenv,可執行
source ~/.profile
每次重開機後,須啟用virtual cv環境
source ~/.profile
workon cv
安裝成功的話,會看到提示符號前面多一個(cv),表示已在cv環境
安裝要使用的python package (大約需要10分鐘)
pip install numpy
開始進行編譯,須確認在 (cv) 環境下才能開始編譯 (啟用virtual cv環境)
cd ~/opencv-3.3.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
-D BUILD_EXAMPLES=ON ..
cmake會根據環境產生需要的makeflie,如無失敗訊息就可繼續進行make:
make –j4
如果用4核心編譯失敗的話,須清除後再重新用單核心編譯:
make clean
make
建立安裝程式庫
sudo make install
sudo ldconfig
檢查版本是否正確
pkg-config --modversion opencv
以下根據python版本進行設定
設定Python 2.7檔案連結 (此步驟預設是不用做 )
檢查是否有cv2.so函式庫:
ls -l /usr/local/lib/python2.7/site-packages/
設定鏈結:
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
設定Python 3檔案連結 (此步驟預設是要做 )
檢查是否有cv2.cpython-34m.so函式庫:
ls -l /usr/local/lib/python3.4/site-packages/
改檔名以避免版本混淆:
cd /usr/local/lib/python3.4/site-packages/
sudo mv cv2.cpython-34m.so cv2.so
設定鏈結:
cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/cv2.so cv2.so
Python程式測試,先下載測試影像watch.jpg:
wget https://pythonprogramming.net/static/images/opencv/watch.jpg
編輯一個opencv_test.py程式:
import cv2 img = cv2.imread('watch.jpg',cv2.IMREAD_GRAYSCALE) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() |
執行:
python opencv_test.py
gcc程式測試,編輯一個opencv_test.cpp程式:
#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("watch.jpg", CV_LOAD_IMAGE_COLOR); namedWindow("watch", WINDOW_AUTOSIZE); imshow("watch", image); waitKey(0); return 0; } |
編譯:
g++ -lopencv_core -lopencv_highgui -lopencv_imgcodecs opencv_test.cpp
g++ `pkg-config --libs opencv` opencv_test.cpp –o opencv_test
執行:
./opencv_test
--安裝成功,刪除無用檔案
cd ~
rm -rf opencv-3.3.0 opencv_contrib-3.3.0
rm opencv-3.3.0.zip opencv_contrib-3.3.0.zip
--參考資料
[1] https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/
[2] http://yehnan.blogspot.tw/2015/12/raspberry-piraspbianopencv.html
留言列表