Raspberry Pi安裝OpenCV_安裝篇

Ryan Lu
Linux on raspberry pi4
6 min readSep 15, 2020

前言:關於OpenCV
OpenCV(Open Source Computer Vision)是一個包含許多電腦視覺相關演算處理的開放原始碼Library,並且OpenCV可以在Android、ios上開發,支援的程式語言也有C/C++,Java,Python,重點是免費的。

OpenCV各版本網址,https://opencv.org/releases/

環境:
1.Raspberry Pi 4
2.Micro SD Card 64G
3.kernel = Linux raspberrypi 5.4.51-v7l+
4.OS = Raspbian GNU/Linux 10 (buster) VERSION=”10 (buster)”

安裝:

A.安裝 OpenCV 相關軟體。

步驟 1:先安裝好作業系統。
可參考 安裝Linux 在Raspberry Pi4

步驟2:更新當前安裝的軟體。
$ sudo apt-get update
$ sudo apt-get upgrate

步驟3:安裝 OpenCV 編譯所需的軟體。
$ sudo apt-get install cmake build-essential pkg-config git

步驟4:安裝常用圖像和視頻格式的支援軟體。
$ sudo apt-get install libjpeg-dev libtiff-dev libjasper-dev libpng-dev libwebp-dev libopenexr-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libdc1394–22-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

步驟5:安裝 OpenCV 界面所需的軟體。
$ sudo apt-get install libgtk-3-dev libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5

步驟6:安裝提高 OpenCV 運行速度的軟體。
$ sudo apt-get install libatlas-base-dev liblapacke-dev gfortran

步驟7:安裝 HDF5軟體。
$ sudo apt-get install libhdf5-dev libhdf5–103

步驟8:安裝 Python。
$ sudo apt-get install python3-dev python3-pip python3-numpy

B.準備編譯 OpenCV。

步驟 1:開啟交換文件。
需要暫時增加交換空間 ( swap ) 的大小,以加快我們在 Raspberry Pi 上編譯 OpenCV 的過程。當RAM 用完時,系統將使用 swap。
通過運行以下指令開啟修改交換文件配置。
$ sudo nano /etc/dphys-swapfile

步驟2:修改交換空間 ( swap ) 的大小。
找到下面這行,
CONF_SWAPSIZE=100
替換成 CONF_SWAPSIZE=2048 ,將 100MB 的大小加大到 2048MB ,方便待會進行編譯。更改後,按 CTRL+ O 然後 Enter 保存,再 CTRL+ X 離開。

步驟3:重新啟動其服務。
$ sudo systemctl restart dphys-swapfile

步驟4:將所需的兩個 OpenCV 存儲庫複製到 Raspberry Pi 中。以下指令會抓最新版本,可改成其他所需版本。
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib.git

C.編譯 OpenCV。

步驟 1:
剛剛複製的“ opencv ”文件夾中創建一個名為“ build ”的目錄,然後將工作目錄更改為該目錄。
$ mkdir ~/opencv/build
$ cd ~/opencv/build

步驟2:
位於新創建的build文件夾中,現在可以 cmake 用來準備 OpenCV 以便在 Raspberry Pi 上進行編譯。運行以下指令以生成所需的makefile。
$ 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 BUILD_TESTS=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D CMAKE_SHARED_LINKER_FLAGS=-latomic -D BUILD_EXAMPLES=OFF ..

步驟3:
make 文件成功完成生成後,現在通過運行以下指令最終繼續編譯 OpenCV。
我們使用參數 -j$(nproc) 來告訴編譯器為每個可用處理器運行編譯器。這樣做將加快編譯過程,並使Raspberry Pi上的每個內核都可以去編譯OpenCV。
$ make -j$(nproc)

步驟4:
編譯過程完成後,繼續安裝 OpenCV。此指令將自動將所有必需的文件複製到所需的位置。
$ sudo make install

步驟5:
重新生成操作系統庫鏈接緩存。如果不運行以下命令,Raspberry Pi將無法找到我們的OpenCV安裝。
$ sudo ldconfig

C.編譯後的清理。

步驟 1:開啟交換文件。
完成了 OpenCV 的編譯,不再需要這麼大的 swap 。通過運行以下指令開啟修改交換文件配置。
$ sudo nano /etc/dphys-swapfile

步驟2:修改交換空間 ( swap ) 的大小。
找到下面這行,
CONF_SWAPSIZE=2048
替換成 CONF_SWAPSIZE=100 。更改後,按 CTRL+ O 然後 Enter 保存,再 CTRL+ X 離開。

步驟3:重新啟動其服務。
$ sudo systemctl restart dphys-swapfile

D.測試 OpenCV。

步驟 1:運行以下命令啟動Python終端。
$ python3

步驟2:使用以下命令導入 OpenCV 模塊。沒有任何反應代表導入成功。
>>> import cv2

步驟3:入了 OpenCV 模塊,應該能夠查詢版本。
>>> cv2.__version__
應該在命令行中看到如下所示的文本。
‘4.5.0’

[參考]
https://blog.huanxiang.codes/FmfvUszCB/

--

--