Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Installer OpenCV sur Raspbian


Sujet :

Raspberry Pi

  1. #1
    Expert éminent sénior
    Installer OpenCV sur Raspbian
    Bonjour,

    j'essaye d'installer OpenCV sur mon Raspberry Pi 3 B+. Je suis le tutoriel ici : https://pymotion.com/installer-openc...sur-raspberry/
    Et je bloque sur 1 point au niveau de l'étape 4 : sur mon Pi sont installées les version 2.7, 3.4 et 3.6 de Python. Je ne veux pas que cmake point sur l'interpréteur Python 3.4 mais sur la version 3.6. J'ai regardé la doc de cmake pour voir comment je peux changer ce point, mais je ne comprends pas vraiment la documentation.

    Comment je peux demander à cmake de pointer sur Python 3.6 ? Merci.

  2. #2
    Modérateur

    Salut
    Quelle version de Python qui est sélectionnée par défaut ?

    Tu peux éventuellement et temporairement imposer la version de Python à ton environnement ?

    Dans ton fichier .bashrc tu ajoutes cette ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alias ​​python='/usr/bin/python3.6'
    Puis tu recharges le .bashrc

    Tu contrôles la version de python appelée par défaut sur ton profil

    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Expert éminent sénior
    Je ne suis pas sûr d'avoir une version par défaut. Dans ma console bash, si je tape
    c'est pour la version 2.7

    pour la version 3.4

    pour la version 3.6

    De même j'ai pip, pip3 et pip3.6

    Dans l'étape 4 du tuto, il y a une minuscule copie d'écran du résultat retourné par cmake (il faut zoomer sur l'image). Donc je voudrais que cmake, pointe sur la version 3.6. Je ne suis pas sûr qu'il faille modifier le bashrc. Je vais peut-être utiliser les commandes indiquées ici :
    https://stackoverflow.com/questions/...version-how-do
    en plus de commandes de compilation.

  4. #4
    Expert éminent sénior
    Il me manque la bibliothèque partagée python3.6.so
    Visiblement dans le tutoriel que j'ai suivi pour l'installation de Python 3.6, la création de cette bibliothèque n'est pas proposée.

  5. #5
    Modérateur

    Salut,
    Si dans la console, la commande python --version répond python 2.7 et que tu tentes d'installé OpenCV 4 ça va merdouiller car il s'attend a trouver la version 3 de python.

    C'est ce que je proposais dans mon précédent poste, de lancer par défaut la version 3 de python en appelant, ou si cmake appel, python


    En regardant ce tuto, mais je n'ai pas de Raspberry sous la main pour essayer, je ne vois pas de gros problèmes, sauf si jamais cmake appel python et ne se retrouve pas avec la bonne version
    https://www.alatortsev.com/2018/11/2...pberry-pi-3-b/
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Expert éminent sénior
    cmake pointe sur python 3.4 et je voudrais qu'il pointe sur python 3.6. Je vais essayer de modifier le fichier bashrc comme tu l'as indiqué, je verrai bien ce qu'il va se passer.

  7. #7
    Modérateur

    Citation Envoyé par Auteur Voir le message
    cmake pointe sur python 3.4
    Le cmake point de manière explicite vers python 3.4

    Alors ce que je préconise ne fonctionnera pas car ça va juste faire pointer "python" vers "python3" qui lui appelle ta version 3.6 (la dernière que tu as installé)... mais cmake va vouloir la 3.4 si c'est en dur dedans. En lisant le tuto, je n'ai rien vu de tel, l'auteur aurait du le préciser car c'est super important. Ça change même carrément tout !

    Dans le tuto j'ai vu ça

    sudo apt-get install python3-dev


    Sauf que cette ligne va installer la version de python la plus récente dans tes paquets, et ce n'est pas du tout garantie que c'est la 3.6. Si on prend une vieille distrib, ce sera peut être 3.4 ou autre.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #8
    Expert éminent sénior
    Dans son tuto cmake pointe sur python3.5 et dans mon cas cmake a pris 3.4, donc ce n'est pas en dur, en tout cas cmake sait où il faut chercher. J'ai raté quelque chose au moment de l'installation de Python 3.6.

    Sauf que cette ligne va installer la version de python la plus récente dans tes paquets, et ce n'est pas du tout garantie que c'est la 3.6. Si on prend une vieille distrib, ce sera peut être 3.4 ou autre.
    Ben, pour Python 3.6, il n'existe pas de version toute faite pour Raspberry, j'ai dû la compiler, comme indiqué précédemment. J'ai modifié .bashrc cela n'a rien changé.

  9. #9
    Expert éminent sénior
    J'avance doucement... j'ai ajouté des flags à mon makefile :
    Code bash :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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-4.0.0/modules \
    	-D PYTHON3_EXECUTABLE:FILEPATH=/usr/local/bin/python3.6 \
    	-D PYTHON3_INCLUDE_DIR<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />ATH=/usr/local/include/python3.6m \
    	-D PYTHON3_LIBRARY:FILEPATH=/usr/local/lib/libpython3.6m.so \
    	-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.6/site-packages/numpy/core/include/numpy \
    	-D BUILD_EXAMPLES=ON ..


    Les flags ajoutés concernent Python3 : PYTHON3_xxxxx

    Il y a encore une erreur dans le package_path

    Mais j'ai un doute : la console m'affiche quand même
    Interpreter /usr/local/bin/python3.6 (ver 3.4.2)
    comment je dois l'interpréter Même chose pour Numpy, j'ai installé la version 1.15.1

    Je ne suis même pas sûr que OpenCV fonctionnera normalement avec Python3.6

  10. #10
    Expert éminent sénior
    C'est raté
    La compilation a planté à 88% et ne trouve pas le fichier python.h. Pourtant après vérification, python.h se trouve bien dans le dossier include que j'ai spécifié : /usr/local/include/python3.6m

  11. #11
    Expert éminent sénior
    ça marche

    Python 3.6
    Pour installer Python 3.6 sur Raspberry Pi j'ai suivi cette procédure : https://gist.github.com/dschep/24aa6...aca2824400d37f
    Ne pas oublier d'installer numpy entre autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pip3.6 install numpy
    OpenCV :
    1ère chose que j'ai faite : j'ai modifié le fichier .bashrc comme me l'a proposé Vincent, mais de cette manière (un alias python3 et non python) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alias &#8203;&#8203;python3='/usr/bin/python3.6'

    ensuite j'ai suivi le tutoriel ici : https://pymotion.com/installer-openc...sur-raspberry/ Toutefois, je n'ai pas suivi l'étape 1, je n'ai pas étendu la partition, je suis passé directement à l'étape 2. J'ai ensuite téléchargé OpenCV comme indiqué, j'ai néanmoins dézippé les archives dans home/Documents. Pas besoin d'installer pip et numpy puisque je l'ai fait au moment d'installer Python 3.6.

    Etape 4, j'ai créé le dossier build, mais j'ai réalisé un fichier makefile.sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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=~/Documents/opencv_contrib-4.0.0/modules \
    	-D PYTHON3_EXECUTABLE:FILEPATH=/usr/local/bin/python3.6 \
    	-D PYTHON3_INCLUDE_DIR:PATH=/usr/local/include/python3.6m \
    	-D PYTHON3_LIBRARY:FILEPATH=/usr/local/lib/libpython3.6m.so \
    	-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.6/site-packages/numpy/core/include/numpy \
    	-D BUILD_EXAMPLES=ON ..
    on remarque que, dans mon cas, les paramètres sont de la forme PYTHON3_xxxxx. Attention à la valeur de l'argument OPENCV_EXTRA_MODULES_PATH. Pour moi c'est ~/Documents/opencv_contrib-4.0.0/modules \ puisque j'ai dézippé les archives dans ~/Documents.

    Dommage, je n'ai pas pris de copie d'écran de ce que j'obtenais cette fois-ci après l'exécution du script. Mais je n'ai plus les aberrations que j'obtenais précédemment . Cette fois-ci j'ai bien, entre autres,
    ]Interpreter /usr/local/bin/python3.6 (ver 3.6)

    J'ai également augmenté l'espace d'échanges swap comme indiqué. J'ai quand même rebooté la machine après cette modification. La compilation (le make -j4) prend quand même un bout de temps (plus d'une heure). Le Pi a tendance à chauffer pendant cette étape (apparition d'un thermomètre sur le bureau).

    Etape 5 : Lier openCV et Python. Dans mon cas c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo ln -s /usr/local/python/cv2/python-3.6/cv2.cpython-36m-arm-linux-gnueabihf.so  /usr/local/lib/python3.6/cv2.so
    Pour la vérification de l'installation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       python3
        >>> import cv2
        >>> cv2.__version__
        '4.0.0'