L’arrivée du Raspberry Pi 2 a permis de pouvoir commencer à amener la vision par ordinateur sur la plateforme Raspberry. Le Raspberry Pi 3 permet d’aller encore plus loin dans le développement d’algorithme avec OpenCV.

Nous allons dans cet article voir les différentes étapes pour installer OpenCV sur votre Pi 3 (B+). Comme Raspbian est basé sur Debian, certaines étapes sont similaires dans l’installation.

Édit: Depuis le 20 Novembre 2018, OpenCV 4 est disponible. Si vous êtes intéressé par son installation pour Raspberry, j’ai réalisé un tutoriel disponible ici

Prérequis:

Vous devrez également avoir, au choix:

  • Un accès physique au Raspberry afin de pouvoir ouvrir un terminal et tapez les commandes
  • Un accès à distance ssh

Si toutes ces conditions sont réunies, nous pouvons commencer !

Étape 1: Étendre la partition

Si votre installation de Raspbian est toute neuve, vous aurez besoin d’étendre la partition afin d’utiliser tout l’espace libre. Pour cela:

sudo raspi-config
Installation d'OpenCV sur Raspberry: Raspi-config: Expand Filesystem
Raspi-config: Expand Filesystem

Dans le menu, allez sur l’option “Expand Filesystem” et appuyez sur entrer et validez.

Enfin redémarrez votre Raspberry:

sudo reboot

Vous pouvez vérifier que votre partition à bien été étendu en tapant la commande df -h et en examinant le résultat:

Installation d'OpenCV sur Raspberry: df-h : la taille utilisée par Raspbian
df-h : la taille utilisée par Raspbian

Note: Dans le cas où vous utiliseriez un carte micro-sd de 8Go, vous pouvez remarquer que près de 50% de votre carte est utilisé. OpenCV nécessitant un peu de place, je vous suggère de supprimer Wolframe de votre Pi:

sudo apt-get purge wolfram-engine

Vous retrouverez ainsi 683Mo d’espace 🙂

Étape 2: Installation des dépendances

Notre première étape pour l’installation des dépendances et de vérifier que nous sommes bien à jour dans les paquets déjà installé:

sudo apt-get update
sudo apt-get upgrade

Ensuite, nous allons installer des outils nécessaires pour la compilation d’OpenCV:

sudo apt-get install build-essential cmake git pkg-config

Afin de pouvoir charger différents formats d’image dans OpenCV (JPEG, PNG, TIFF, …),, ainsi que différents formats vidéo, nous installons les paquets suivants:

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev 
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

Nous passons ensuite à l’installation des paquets GTK nécessaire pout l’utilisation des fonctions graphiques ( Affichage des images, sélection de ROI):

sudo apt-get install libgtk2.0-dev libcanberra-gtk-module

Et ensuite nous installons quelques dernières librairies utilisées pour l’optimisation de calculs:

sudo apt-get install libatlas-base-dev gfortran

Suivi de peu par le gestionnaire de paquet pip:

sudo apt-get install python3-pip

Et enfin Numpy, pour la manipulation de matrice:

pip3 install numpy

Nous avons donc installé toutes nos dépendances, nous pouvons maintenant passer à OpenCV

Étape 3: Installation d’OpenCV

Commençons par récupérer la branche 3.3.0 d’OpenCV depuis Github:

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.3.0.zip
unzip opencv.zip

Nous allons également récupérer la branche 3.3.0 d’OpenCV-Contrib. Ce repo permet l’utilisation de fonctionnalités supplémentaires comme les réseaux de neurones, des algorithmes de détection de visage, de tracking ….

wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.3.0.zip
unzip opencv_contrib.zip

Nous pouvons dès maintenant préparer notre build en utilisant Cmake

cd ~/opencv-3.3.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local \
	-D INSTALL_C_EXAMPLES=OFF \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
	-D BUILD_EXAMPLES=ON ..

Pensez bien à vérifier la sortie de la commande Cmake !

Installation d'OpenCV sur Raspberry: Vérification de la commande CMake, la partie python3 est correctement remplie
Vérification de la commande Cmake

Enfin nous sommes près à compiler OpenCV ! Le rasperry Pi 3 ayant 4 coeurs, nous allons les exploiter lors de la compilation avec la commande suivante:

make -j4

Note: Si la compilation renvoie une erreur, essayer de compiler avec un seul cœur:

make clean
make

Puis nous installons OpenCV:

make install
ldconfig

Étape 4: Test de l’installation d’OpenCV 3.3.0 et de Python 3.4.2

Félicitation, vous venez d’installer OpenCV!

Vérifions juste que nous avons bien tout installé:

python3
>>> import cv2
>>> cv2.__version__
'3.3.0'

Une fois que vous avez vérifié qu’OpenCV était bien installé, vous pouvez supprimez les répertoires opencv et opencv_contrib pour récupérer de la place:

rm -rf opencv opencv_contrib

Si vous avez rencontré des problemes lors de l’installation d’OpenCV sur votre Raspberry, n’hesitez pas a demander de l’aide dans les commentaires ci-dessous ou sur le forum.


22 commentaires

Eric · 6 janvier 2018 à 18 h 28 min

python3
>>>import cv2

Traceback (most recent call last):
File «  », line 1, in
ImportError: No module named ‘cv2’

Florent · 6 janvier 2018 à 20 h 27 min

Bonjour Eric,
L’installation c’est elle passée sans erreur ?
Python3 était bien sélectionné dans la sortie de la commande CMake ?

Peut-être que le fichier cv2.so est installé dans ‘/usr/local/lib/python3.*/dist-packages/’ au lieu de ‘/usr/local/lib/python3.*/site-packages/’. Si tel est le cas, un simple déplacement du fichier permetterai de résoudre le problème.

pepito · 26 mars 2018 à 15 h 28 min

lorsque j instale opencv a 43% l installation calle
que dois je faie

    Florent · 28 mars 2018 à 14 h 24 min

    Bonjour,
    Un message d’erreur apparait-il ?
    Vous pouvez réessayer de re-compiler OpenCV en utilisant un seul processeur.

    make clean
    make

Justin · 9 octobre 2018 à 9 h 25 min

Bonjour Florent, merci pour ce tuto! J’ai néanmoins une erreur au moment de l’installation. Celle-ci me dis « file cannot create directory : /usr/local/include/opencv2. Maybe need administrative privileges. »
Comment lui donner ces fameux privilèges admin?
Je suis tout nouveau sur Raspbian alors désolé si ma question paraît bête.
Merci d’avance!

    Florent · 9 octobre 2018 à 10 h 05 min

    Bonjour Justin,
    Pour donner les privilèges administrateurs, il suffit d’utiliser la commande « sudo » avant la commande posant problème.
    ex: sudo make install
    Le mot de passe de l’utilisateur root sera ensuite demandé.

Adrien · 29 novembre 2018 à 3 h 18 min

Bonsoir,
J’ai essayé de suivre ce tuto 3 fois et je reste toujours bloqué à l’étape 3 lorsque j’ai effectué la commande make -j4. Le téléchargement a une première fois bloqué à 91%, une seconde fois à 93% et une troisième fois à 93%.
Lorsque le téléchargement bloque je suis contraint de débrancher et rebrancher ma raspberry.
Comment pourrais-je y remédier ?

    Florent · 29 novembre 2018 à 8 h 10 min

    Bonjour,
    Normalement, vous pouvez arrêter la compilation en effectuant la combinaison Ctrl + c

    Essayer de compiler OpenCV en utilisant moins de cœur:
    make clean permet de supprimer les fichiers qui ont été généré
    make permet de compiler en utilisant un seul cœur.

ALex · 3 mars 2019 à 13 h 43 min

Bonjour Florent,

Merci pour ce tuto !
J’ai un problème, l’installation d’open CV bloque a 55% même en ayant utilisé un seul processeur.
Un message apparait : « Fatal error : c’ant write PCH file : aucun espace disponible sur le périphérique ».
Penses tu savoir d’où peux venir ce problème ?
Chose à savoir : j’ai du couper l’installation une première fois à environ 20% pour faute de temps en faisant un shutdown de la Raspberry.
Merci.

    Florent · 3 mars 2019 à 13 h 54 min

    Bonjour Alexis,
    Vous pouvez tout d’abord regarder si vous n’avez pas de problème d’espace sur votre carte SD.

    Sinon vous pouvez essayer de compiler OpenCV en désactivant les en-têtes précompilés. Pour ce faire, rajouter l’option « -D ENABLE_PRECOMPILED_HEADERS=OFF\ » dans la commande cmake.
    Pensez à supprimer les fichiers dans le dossier build avant de réaliser cette opération.

Mej · 7 mars 2019 à 17 h 14 min

Bonjour, j’arrive pas à faire le make ! no makefile found ??

    Florent · 7 mars 2019 à 18 h 53 min

    Bonjour,
    Est ce que la commande CMake s’est déroulé sans retourner d’erreur ?

WannaCry · 11 mai 2019 à 17 h 04 min

Bonjour,

Le tutoriel est vraiment bien expliqué !
De plus, je vois que vous répondez aux questions et merci pour ça !

Cependant, j’ai un problème dans l’étape 3 lorsque j’essaie de faire les étapes avec Cmake. C’est un problème de version de Cmake : actuellement en 2.8.9-1 et demandant la 2.9.12 au moins.

J’ai tenté:
– d’upgrade/update mais cela indique que la version 2.8.9-1 est la plus récente
– installer/réinstaller mais c’est pareil

Serait-il possible d’installer OpenCV sans Cmake ? Où alors avez vous la solution ?

Merci d’avance

PS: Je suis sur une Raspberry Pi 2

Hocine · 10 juin 2019 à 14 h 25 min

Bonjour,

Merci pour ce super tuto. J’ai un petit problème lors de la compilation, l’interpréteur bloque sur un warning concernant la version du C++, je suppose.(eh oui encore un newbie 😀 ) voici mon message d’erreur :

==============================================================================
[ 43%] Linking CXX static library ../../lib/libopencv_dnn_modern_pch_dephelp.a
[ 43%] Built target opencv_dnn_modern_pch_dephelp
[ 43%] Generating precomp.hpp
[ 43%] Generating precomp.hpp.gch/opencv_dnn_modern_RELEASE.gch
[ 43%] Built target pch_Generate_opencv_dnn_modern
[ 43%] Building CXX object modules/dnn_modern/CMakeFiles/opencv_dnn_modern.dir/src/caffe_converter.cpp.o
In file included from :0:0:
/usr/include/stdc-predef.h:59:1: warning: /home/pi/opencv-3.3.0/build/modules/dnn_modern/precomp.hpp.gch/opencv_dnn_modern_RELEASE.gch: not used because `__cplusplus’ defined as ` 201103L’ not ` 199711L’ [-Winvalid-pch]
#endif
^

=============================================================================

Merci d’avance 😀

    Florent · 11 juin 2019 à 11 h 53 min

    Bonjour,
    Il est possible que l’erreur que vous ayez obtenue soit une erreur au niveau de l’utilisation de la mémoire du Raspberry.

    Pour résoudre ce problème, vous pouvez augmenter la taille de l’espace d’échange (swapsize):
    – Ouvrez le fichier dphys-swapfile: sudo nano /etc/dphys-swapfile
    – modifiez la variable CONF_SWAPSIZE :De « CONF_SWAPSIZE=100 » passez à « CONF_SWAPSIZE=1024 »
    – Sauvegardez le fichier : CTRL+X , Yes , Entrer
    – Redémarrer le service dphys-swapfile : « sudo /etc/init.d/dphys-swapfile stop », puis « sudo /etc/init.d/dphys-swapfile start »

    Enfin, relancer la commande « make -j4 »
    A la fin de l’installation, je vous conseille de refaire cette démarche et de repasser CONF_SWAPSIZE à 100 afin d’éviter l’usure de votre carte SD

    J’espère que cela vous aidera à avancer dans l’installation 😀

      Hocine · 15 juin 2019 à 13 h 24 min

      je vous remercie pour votre retour, j’ai essayé votre solution cependant j’ai toujours le même problème :/

      PS: je m’excuse pour ma réponse tardive.Travail oblige, je ne bidouille que le week-end :/

        Hocine · 16 juin 2019 à 2 h 09 min

        Bonsoir,

        J’ai ENFIN pu instaler opencv,

        en fait j’avais deux problèmes:
        1) ayant deux versions de python à savoir 2.7 et 3.4 le cmake compilait pour python2.7 au lieu de 3.4 , lors de l’exécution de la commande cmake j’avais en sortie :

        **Python (for build): (python2.7)

        la solution était supprimer le dossier build et de le recréer ainsi que de rajouter cette option au cmake: -DPYTHON_DEFAULT_EXECUTABLE=$(which python3)

        ça devient:

        cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D INSTALL_C_EXAMPLES=OFF \
        -D INSTALL_PYTHON_EXAMPLES=ON \
        -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
        -D BUILD_EXAMPLES=ON
        -DPYTHON_DEFAULT_EXECUTABLE=$(which python3)
        2) d’après ce que j’ai compris: mon cmake avait (par défaut )un standard C++ de 1997 au lieu du standard C++ 2011 pour lequel le source est écrit le source.

        la solution était : de rajouter cette ligne
        set(CMAKE_CXX_FLAGS « -std=c++11 »)

        au tout début du fichier suivant:

        ~/opencv-3.3.0/CMakeLists.txt

        commande: sudo nano ~/opencv-3.3.0/CMakeLists.txt

        crédit:
        1-https://stackoverflow.com/questions/37070304/how-to-build-opencv-for-python3-when-both-python2-and-python3-are-installed
        2- https://stackoverflow.com/questions/45521747/compiling-opencv-3-3-c11-is-not-supported

          Florent · 19 juin 2019 à 8 h 44 min

          Super !
          Merci pour ce retour 🙂

DIPAMA · 11 juin 2019 à 11 h 40 min

bonjour,
lorsque je fais import cv2, je rencontre des difficultés. j’ai besoin de votre aide.

pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type « help », « copyright », « credits » or « license » for more information.
>>> >>>import cv2
File «  », line 1
>>>import cv2
^
SyntaxError: invalid syntax

    Florent · 11 juin 2019 à 11 h 45 min

    Bonjour,
    il semble que vous ayez laisser les « >>> » dans la commande.
    Les « >>> » signifient que python attend votre instruction.
    Il suffit alors de taper « import cv2 ».

    Bonne journée

Guy Pieront · 22 juin 2019 à 6 h 19 min

Merci pour le tuto
juste une presition les commande make install et ldconfig doivent est executer un super utilisateur (sudo su) sinon ca vas pas ou avec un sudo devant ce serrais bien de l’indiqué.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.