Pour effectuer le traitement d’image nous allons procéder à l’installation d’OpenCV sur Raspberry PI. OpenCV est une bibliothèque graphique libre qui permet d’effectuer du traitement d’image relativement simplement. Avec OpenCV, il est possible de traiter les images de la Pi Camera V2.
Matériel
- Raspberry PI avec une distribution Linux (par exemple Raspbian).
- Accès internet
Libérer de l’espace mémoire sur votre Raspberry Pi
Pour permettre l’installation d’OpenCV sur Raspbian, il vous faudra libérer de la place sur votre carte SD si elle n’a pas la capacité suffisante.
Ouvrez un terminal et tapez ces quelques commandes.
N.B.: Ces commandes vont supprimer définitivement les logiciels Wolfram et libre office.
## Désinstallation de Wolfram et libreoffice
sudo apt-get -y purge wolfram-engine
sudo apt-get -y purge libreoffice*
sudo apt-get -y clean
sudo apt-get -y autoremove
sudo apt -y update
sudo apt -y upgrade
Vous pouvez verifier l’espace disponible avec la commande
df -h
Option 1 : Commande PIP
Pour certaine version d’OS, il est possible d’installer OpenCV pour Python assez simplement avec la commande pip
pip install opencv-python
Testé sur Raspberry Pi 3B+ avec Raspbian Bullseye
Si vous avez certaines librairies déjà installées, il peut y avoir des incompatibilités notamment avec numpy
Vous pouvez désinstaller puis réinstaller ou upgrader
pip install numpy --upgrade
ou des dépendances manquantes comme libatlas
sudo apt-get install libatlas-base-dev
Dans d’autres cas, il vous faudra compiler OpenCV à partir des fichiers sources.
Option 2 : Commande d’installation d’OpenCV
A partir de cette ligne nous allons créer un fichier .sh que nous allons rendre exécutable pour que toutes les commandes copiées dans le fichier .sh s’exécutent l’une après l’autre.
Placez vous sur votre bureau. Faites un clic droit ‘New file’ et donner le nom suivant : install.sh
Ouvrez ce fichier en double cliquant dessus. Par défaut il va s’ouvrir avec l’éditeur de texte de base de Raspbian.
Copier toutes les lignes de codes suivantes dans ce fichier. L’exécution de ces lignes va permettre de récupérer les fichiers sur un répertoire GIT, de créer les dépendances et de compiler OpenCV sur votre RaspberryPi.
sudo apt-get -y remove x264 libx264-dev
## Install dependencies
sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm
sudo apt-get -y install git gfortran
sudo apt-get -y install libjpeg8-dev libjasper-dev libpng12-dev
sudo apt-get -y install libtiff5-dev
sudo apt-get -y install libtiff-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get -y install libxine2-dev libv4l-dev
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd $cwd
sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default
sudo apt-get -y install libatlas-base-dev
sudo apt-get -y install libmp3lame-dev libtheora-dev
sudo apt-get -y install libvorbis-dev libxvidcore-dev libx264-dev
sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get -y install libavresample-dev
sudo apt-get -y install x264 v4l-utils
# Optional dependencies
sudo apt-get -y install libprotobuf-dev protobuf-compiler
sudo apt-get -y install libgoogle-glog-dev libgflags-dev
sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
sudo apt-get -y install python3-dev python3-pip
sudo -H pip3 install -U pip numpy
sudo apt-get -y install python3-testresources
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout $cvVersion
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout $cvVersion
cd ..
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=$cwd/installation/OpenCV-"$cvVersion" \-D INSTALL_C_EXAMPLES=ON \-D INSTALL_PYTHON_EXAMPLES=ON \-D WITH_TBB=ON \-D WITH_V4L=ON \-D OPENCV_PYTHON3_INSTALL_PATH=$cwd/OpenCV-$cvVersion-py3/lib/python3.5/site-packages \-D WITH_QT=ON \-D WITH_OPENGL=ON \-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \-D BUILD_EXAMPLES=ON ..
make -j$(nproc)
sudo make install
sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/g' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
Une fois copiées, lancez la commande suivante pour rendre exécutable le fichier que l’on vient de créer :
chmod +x install.sh
Maintenant nous allons exécuter ce fichier avec la commande suivante :
./install.sh
L’installation risque de prendre quelques heures sur RaspberryPi3, vous pouvez laisser tourner sans aucun souci.
Une fois les commandes finies, il ne vous reste plus qu’à taper les dernières commandes dans le terminal :
pip3 install opencv-python
sudo apt install libqtgui4
sudo apt install libqt4-test
pip install opencv-contrib-python==4.1.0.25
Une fois l’installation effectuée, pour vérifier que l’installation s’est bien faite, créez un fichier python avec uniquement la ligne de code suivante :
$ import cv2
Exécutez le fichier avec :
python3 NOM_DU_FICHIER
Bonjour
Félicitations pour vos tutos très clairs et détaillés !
Cependant ce tuto pour installer openCV sur un raspberry pi n’a pas fonctionné pour moi. Lorsque j’exécutais le script install.sh, après quelques téléchargements et installations, le script ne semblait plus actif et malgré 3h d’attente le processeur était bloqué à 100%
D’après quelques recherche il s’agirait d’un composant pour la compilation d’openCV qui ne supporterait pas les anciennes versions de raspberry. J’ai du installer d’une autre manière la version 3.4.6.27. Je précise également que mon besoin est en mode headless (pas d’ihm, raspberry pi os lite installé) : pip3 install “opencv-contrib-python-headless==3.4.6.27”
Tout ceci fait suite à une réinstallation propre, et openCV est maintenant beaucoup plus rapide qu’avant (peut être le mode headless plus léger…). Bref je me dis qu’il serait intéressant de proposer des tutos d’installation openCV headless car pour la robotique le mode graphique est bien souvent inutile.
Bonjour,
Merci beaucoup pour votre commentaire.
C’est intéressant effectivement. Je garde cela en tête pour la suite
Bonjour,
J’ai suivi le tuto à la lettre. Seulement, comme cela ne fonctionnait pas, j’ai taper les commandes dans le terminal une à une pour observer le déroulement de l’installation.
Cela coince à la commande : make -j$(nproc)
le terminal indique en dernier :
[ 60%] Built target open_test_objetdetect
/usr/bin/ld: CMakeFiles/example_opengl_opengl.dir/opengl.cpp.o: in function ‘main’:
opengl.cpp:(.text.startup.main+0x354): undefined reference to ‘gluPerspective’
/usr/bin/ld: opengl.cpp:(.text.startup.main+0x388): undefined reference to ‘gluLookAt’
collect2 error: ld return 1 exit status
make[2]: *** [samples/opengl/CMakeFiles/example_opengl_opengl.dir/build.make.90: bin/example_opengl_opengl] Error 1
make[1]: *** [CMakeFiles/Makefile2:41943: samples/opengl/CMakeFiles/example_opengl_opengl.dir/all] Error 2
make[1]: *** Attente des tâches non terminées….
[ 60%] Built target opencv_test_rapid
[60%] Built target example_rgbd_linemod
[ 61%] Built target opencv_test_rgbd
make: *** [Makefile:163: all] Error 2
Auriez-vous une idée du problème ?
Merci, au plaisir de vous lire
Problème précédent résolu par l’installation de freeglut3, puis relance du fichier exécutable install.sh et des dernières commandes.
Merci beaucoup pour cette solution, il faut que je la teste sur un setup neuf!
Bonjour,
J’ai eu un problème similaire erreur à 95% erreur fatale :
GL/glu.h : aucun fichier ou répertoire de ce type #include
j’ai trouvé une solution ici :
voir le lien https://github-com.translate.goog/IntelRealSense/librealsense/issues/5232?_x_tr_sl=auto&_x_tr_tl=fr&_x_tr_hl=fr#issuecomment-552941255
la solution : sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
Merci beaucoup d’avoir publié votre solution
Bonjour,
La commande ‘make -j$(nproc)’ bloque toujours, malgré les pistes de résolutions notées ici …
Freeze complet de l’OS.
Pourquoi / comment une installation peut devenir aussi complexe ??
Bref,
Bonjour,
L’installation ne fonctionne pas avec pip install?
La compilation à partir des sources est toujours très complexe.