|

【AI_Column】樹莓派(Pi 3+)安裝 OpenCV4 / QT5 心得

   
作者:許哲豪 Jack

前年底(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註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

許 哲豪

Author: 許 哲豪

工作經驗超過二十年,主要專長機電整合、電腦視覺、人機互動、人工智慧、專利分析及新創輔導。曾任機電整合工程師、機器視覺研發副理、技轉中心商業發展經理。目前擔任多家公司兼任技術顧問並積極推廣實境互動相關技術。 主持歐尼克斯實境互動工作室(OmniXRI):http://omnixri.blogspot.com Edge AI Taiwan邊緣智能交流區:https://www.facebook.com/groups/edgeaitw/

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *