Raspberry PI – installatie van OpenCV met broncode

Installatie van OpenCV op Raspberry PI met de broncode van OpenCV.

Configuratie:
• Raspberry PI met 120GB SSD: Buster, armv71 (32-bit).
• OpenCV versie 4.5.2 (feb’21).

Installatie volgens de Terminal instructies van PyImageSearch. Ik heb de installatie van OpenCV met compileren van de broncode uitgevoerd. Volgens PyImageSearch zitten daar enkele interessante algoritmen bij (Non-Free algorithms). De hele installatie kan paar uur duren en heb ik geschreven in 11 stappen.

 

1. Voorbereidingen (afhankelijkheden):

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install cmake gfortran
$ sudo apt-get install libjpeg-dev libtiff-dev libgif-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libgtk2.0-dev libcanberra-gtk*
$ sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev
$ sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev
$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt-get install libjasper-dev liblapack-dev libhdf5-dev
$ sudo apt-get install protobuf-compiler

 

1b. Optioneel installatie van Qt5. 

Qt is een een open-source toolkit voor het maken van cross-platform grafische gebruikersinterfaces. De toolkit kan gebruikt worden op een Raspberry Pi.

Ik heb de toolkit geïnstalleerd met Terminal commando:

$ sudo apt-get install qt5-default

 

2. Vervolgens OpenCV versie 4.5.2 downloaden en uitpakken met de volgend Terminal commando’s:

$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.2.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.2.zip

$ unzip opencv.zip
$ unzip opencv_contrib.zip

$ mv opencv-4.5.2 opencv
$ mv opencv_contrib-4.5.2 opencv_contrib

 

3. Vergroot de SWAP file

Hiermee is het mogelijk de OpenCV codebestanden te compileren met alle 4 de cores van de Raspberry PI 4.
Verander met nano in de file /etc/dphys-swapfile de waarde van CONF_SWAPSIZE naar 2048 (MB):

# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048

Stop en herstart de swap service:

$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

 

4. Maak en open een Python Virtual environment, de mijne noem ik cv45py3

$ mkvirtualenv cv45py3
$ works cv45py3

waarbij ik gebruik maak van de tools virtualenv en virtualenvwrapper. Details: zie [PyImageSearch].

 

5. Installeer NumPy, de enige afhankelijkheid van OpenCV, in de cv45py3 environment en Pi Camera:

$ pip install numpy
$ pip install "picamera[array]"

 

6. Maak een makefile

Configureer een build:

$ cd ~/opencv
$ mkdir build
$ cd build
$ 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 ..

Check dat de Python 3 interpreter, de libraries en numpy verwijzen naar de virtualenv cv45py3 en dat de ‘Non-Free algorithms’ geïnstalleerd worden (‘Yes’).

 

7. Start het compliceren van OpenCV. 
Dit kan enige tijd in beslag nemen (1-4 uur). 

$ make -j4

Bij geen fouten, is het tijd om de geoptimaliseerde OpenCV te installeren en de build schoon te maken:

$ sudo make install
$ sudo ldconfig
$ make clean

 

8. Zet de swap file weer terug naar de oorspronkelijke waarde!

$ sudo nano /etc/dphys-swapfile
set CONF_SWAPSIZE=100 with the Nano text editor

 

9. Maak een symbolische link van de OpenCV ibrary (cv2) naar de Python virtuele omgeving:

 
$ cd ~/.virtualenvs/cv45py3/lib/python3.7/site-packages
$ ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-arm-linux-gnueabihf.so
$ cd ~
 

10. Optionele cleanup-acties:
$ cd ~
$ rm opencv.zip
$ rm opencv_contrib.zip

11. Check de OpenCV installatie in de Python virtual environment cv45py3:

$ works cv45py3
$ python
>>> import cv2
>>> cv2.__version__
‘4.5.2'

Installatie met succes uitgevoerd!

Om met OpenCV te programmeren, is het noodzakelijk de Python interpreter te zetten naar cv45py3.
Terminal commandline: workon cv45py3

Dat geldt dan ook voor de Python IDE’s, zoals bijvoorbeeld Visual Studio Code (VSC) en bij gebruik van Jupiter notebooks.

 

Bronnen:
1. [PyImageSearch] https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/

2. [qengineering] https://qengineering.eu/install-opencv-4.5-on-raspberry-pi-4.html