Introduzione

OpenCV (Open Source Computer Vision Library) è una libreria di visione artificiale open source e ha collegamenti per C ++, Python e Java. È utilizzato per una vasta gamma di applicazioni tra cui analisi di immagini mediche, elaborazione immagini di street view, video di sorveglianza, rilevamento e riconoscimento di volti, tracciamento di oggetti in movimento, estrazione di modelli 3D e molto altro.

OpenCV può sfruttare l'elaborazione multi-core e presenta l'accelerazione GPU per il funzionamento in tempo reale.

In questo tutorial, spiegheremo come installare OpenCV su Raspberry Pi 3.

Prerequisiti

Partiamo dal presupposto che Raspbian sia installato sul tuo Raspberry Pi.

Installare OpenCV dai repository Raspbian

Il modulo OpenCV Python è disponibile dal repository Raspbian standard.

Per installare il modulo OpenCV Python, eseguire i seguenti comandi:

sudo apt update
sudo apt install python3-opencv

Il comando sopra installerà tutti i pacchetti necessari per eseguire OpenCV.

Per verificare l'installazione, importare il modulo cv2 e stampare la versione OpenCV:

python3 -c "import cv2; print(cv2.__version__)"
3.2.0

Se si desidera installare OpenCV con i collegamenti Python 2, installare il pacchetto python-opencv.

Installare OpenCV da sorgente (source)

Il modo raccomandato per installare OpenCV è quello di creare la libreria dal sorgente. In questo modo avrai il controllo completo sulle opzioni di generazione e OpenCV sarà ottimizzato per il tuo sistema.

Inizia aumentando lo spazio di swap per evitare blocchi della compilazione dovuti a problemi di memoria:

sudo nano /etc/dphys-swapfile

Cambia il valore predefinito del parametro CONF_SWAPSIZE  da 100 a 1024:

CONF_SWAPSIZE=1024

Salvare il file ed eseguire il comando seguente per rendere effettive le modifiche:

sudo /etc/init.d/dphys-swapfile restart

Ora possiamo iniziare a costruire OpenCV. Innanzitutto, aggiorna l'indice dei pacchetti e installa gli strumenti di compilazione e le dipendenze richieste:

sudo apt update
sudo apt install build-essential cmake git pkg-config libgtk-3-dev "libcanberra-gtk*"
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev

Crea la directory di build, entra nella directory e clona i repository di OpenCV e OpenCV da Github::

mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

Al momento della scrittura, la versione predefinita nei repository GitHub è la versione 4.1.1. Se si desidera installare una versione precedente di OpenCV, accedere a entrambe le directory opencv e opencv_contrib ed eseguire git checkout <opencv-version>.

Dopo aver clonato i repository, creare una directory di build temporanea e modificarla:

mkdir -p ~/opencv_build/opencv/build && cd ~/opencv_build/opencv/build

Imposta la configurazione build di OpenCV con cmake:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D ENABLE_NEON=ON \
    -D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
    -D BUILD_EXAMPLES=OFF ..

L'output sarà simile al seguente:

...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv_build/opencv/build

Esegui make per avviare il processo di compilazione:

make -j4

Il processo richiederà del tempo, circa 1-2 ore, a seconda del modello Raspberry Pi. Se la compilazione non riesce a un certo punto, a causa di risorse non disponibili, eseguire nuovamente il comando make e il processo continuerà da dove si è interrotto.

Al termine, vedrai un messaggio di output simile al seguente:

...
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-35m-arm-linux-gnueabihf.so
[100%] Built target opencv_python3

Il passaggio finale consiste nell'installare i file OpenCV compilati:

sudo make install
...
-- Installing: /usr/local/bin/opencv_version
-- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"

Per verificare se OpenCV è stato installato correttamente, digita i seguenti comandi e dovresti vedere la versione di OpenCV:

Libreria C ++:

pkg-config --modversion opencv4
4.1.1

Libreria Python:

python3 -c "import cv2; print(cv2.__version__)"
4.1.1-pre

Eliminare i file source

Se non hai molto spazio libero sulla scheda SD, elimina i source file:

rm -rf ~/opencv_build

L'uso eccessivo dello spazio swap potrebbe danneggiare la scheda SD. Riporta lo spazio di swap alle dimensioni originali:

sudo nano /etc/dphys-swapfile

Modifica il valore del parametro CONF_SWAPSIZE in 100:

CONF_SWAPSIZE=100

Salvare il file e attivare le modifiche:

sudo /etc/init.d/dphys-swapfile restart

Conclusione

Ti abbiamo mostrato come installare OpenCV sulla tua scheda Raspberry Pi. Costruire OpenCV dal sorgente ti dà maggiore flessibilità e dovrebbe essere la tua prima opzione quando installi OpenCV.