前年底(2017/12)個人開始了第一個開源項目「OpenQCam」,在這個項目中我整合了最小的樹莓派 Pi Zero W 和一組 SPI 介面 2.2 吋 QVGA(320x240)解析度的 LCD 加上二個實體按鍵與二個 LED,並以 OpenCV(2.4.9)寫了一個簡單的範例,完成了一個簡易型開源相機。
去年底樹莓派推出了最新的 Pi 3 A+、Pi 3 B+ 及 Raspbian(2018–11–13),OpenCV 也推出 4.0(純C++版),並加強深度學習的支援。雖然樹莓派已可支援 Tensoflow(1.9 版以上),解決部份深度學習的推論工作,但遇到傳統電腦視覺與深度學習問題需整合時,OpenCV 或許更為合適,不過可惜的是,目前 OpenCV 在樹莓派上只能使用 CPU ,無法使用 GPU 加速計算。
Pi 3A+ / 4” LCD / HDMI 連結組合(圖片來源:Jack 提供)
最近為了測試這個新的組合,買了 Pi 3A+、Pi 3B+、一組 CSI 介面 500 萬像素攝像頭及一組微雪 4” HDMI 介面解析度為 800x480 的 LCD(如上圖所示)。為了讓顯示內容更貼近一般產品具有的圖形操作介面(GUI),原本我預計用平常慣用的 QT(C++ 版本)進行程式開發(想說之前有多次舊版的安裝經驗,這次應該三兩下就能搞定工作環境開始寫程式),沒想到又是一波多折。
為了讓大家能順利進入開發環境,接下來就向大家分享踩坑心得,避免重蹈覆轍:
1. 準備一張 16 GB SD 卡,安裝完所有程序後大約剩 3 GB 左右。
2. 到樹莓派官網下載最新版本 Raspbian Stretch with desktop and recommended software 2018-11-23,再用 Win32 Disk Imager 將下載到的 Image 燒到 SD 卡。
3. 先不要依微雪 4”LCD 安裝步驟修改樹莓派 config.txt,亦不要將樹莓派和 LCD HDMI 連接在一起,而是用 HDMI 纜線接到一台正常的 HDMI 螢幕(1280x720 以上)或具有 HDMI 的電視上。這樣是為了方便後續遠端 VNC 操作時畫面不會太小。
4. 一般 Pi 3 都會要求使用 5 V 3 A 的變壓器供電,但使用 2 A 的變壓器還是能開機且能正常工作,只是開機後畫面右上方會出現一個黃色閃電符號,這表示供給電壓不足。
5. 將 SD 插入樹莓派,開機後會自動要求設定無線網路、語系、時區等基本設定,最後還會詢問是否更新系統,選擇「是」後視網路狀況大約等十到二十分鐘進行更新系統(這比以前要自己逐一設定方便許多)。
6. 更新完後先不急著重新開機,先到主選單/Preference/Raspberry Pi Configuration 下 Interfaces 頁面,將 Camera / VNC 致能(Enable)勾選起來,再到 Performance 頁面將 GPU 64 MB 改為 128 MB(建議採用內建的 VNC(RealVNC)不要另外安裝 Tight VNC,以免後續遠端操作 QT 時會有問題)。
7. 進入終端機模式,更新系統相依套件包及固件驅動程式,完成後再重新開機即可。
sudo rpi-update
sudo apt-get update
sudo apt-get upgrade
sudo reboot
以上步驟大致上不會遇到太多問題,接下來要安裝 OpenCV / QT 時就有很多設定順序及相依套件問題;一般若只用到基本的 OpenCV 2.4.9 版搭配 QT 5.x 版時,只需執行下列指令即可。
sudo apt-get install -y libopencv-dev python-opencv
sudo apt-get install -y qt5-default qtcreator
(若要其他版本的 OpenCV 就得自己重新編譯,但不知為何沒人提供預先編好的版本讓人直接下載自動安裝)
8. 為了讓大家方便安裝,可直接到 Github 下載預先整理好的安裝程序 opencv_install.sh,直接執行即可。這裡我們安裝的是 OpenCV 4.0.1, QT 5.7.1, QT Creator 4.2.0版本(./opencv4_qt5_install.sh 或 sudo bash ./opencv4_qt5_install.sh)。
完整安裝內容如下所示:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake unzip pkg-config
sudo apt-get install -y libjpeg-dev libtiff-dev libjasper-dev libpng12-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libxvidcore-dev libx264-dev
sudo apt-get install -y libgtk-3-dev
sudo apt-get install -y libcanberra-gtk*
sudo apt-get install -y libatlas-base-dev gfortran
sudo apt-get install -y python3-dev python3-pip
sudo pip3 install numpy scipy
sudo apt-get install -y python-dev python-pip
sudo pip install numpy scipy
sudo apt-get install -y qt5-default
sudo apt-get install -y qtcreator
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.1.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.1.zip
sudo unzip opencv.zip
sudo unzip opencv_contrib.zip
sudo mv opencv-4.0.1 opencv
sudo mv opencv_contrib-4.0.1 opencv_contrib
cd ~/opencv
sudo mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_FFMPEG=ON \
-D BUILD_TESTS=OFF \
-D WITH_QT=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
sudo make -j4
sudo make install
sudo ldconfig
sudo apt-get update
由於執行需要數小時之久,所以建議準備一個小風扇對著板子吹,以免 CPU 過熱變慢甚至當機。本來只想安裝 Python 3 相關套件,但 OpenCV 編譯(make)到最後時一直報錯,所以只好 python 2 & 3 都安裝;make -j4 則是讓四核心都投入編譯工作,速度會快一些,但有時會遇到撞車問題編譯失敗,此時改用單核心編譯下達 sudo make 即可。
安裝時原本是用 Pi 3A+,因為記憶體只有 512 MB,其中又有 128 MB 與 GPU 共享,所以將 SWAP 空間由 100 MB 加大到 1024 MB,但結果依舊多次編譯失敗,最後只好移至 Pi 3B+ 上重新依上述程序編譯成功後再複製 SD 卡到 Pi 3A+ 上執行其他工作。
9. 完成安裝後可利用 Python 3 簡單測試一下是否成功,在終端機執行下列命令,若成功出現 OpenCV 版本號即完成。
Python3
Import cv2
cv2.__version__
完成所有安裝後,在左上角主選單「軟體開發」下會看到 Qt Creator,點擊後即可進入 QT 開發環境。使用前要先設定編譯工具相關路徑,如下圖所示:
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏