10
votes

symbole non défini: __atomic_fetch_add_8

J'essaye de tester ma picamera sur thonny python ide sur mon raspberry pi mais j'obtiens une erreur:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height

while(True):
    ret, frame = cap.read()
    frame = cv2.flip(frame, -1) # Flip camera vertically
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame', frame)
    cv2.imshow('gray', gray)

    k = cv2.waitKey(30) & 0xff
    if k == 27: # press 'ESC' to quit
        break

cap.release()
cv2.destroyAllWindows()

J'ai déjà essayé de rechercher des solutions possibles, mais je n'ai pas pu le faire car je ne comprends pas ce qu'ils essayaient de dire à propos de -latomic. je suis assez nouveau dans ce domaine.

Traceback (most recent call last):
  File "/home/pi/Documents/Camera_test.py", line 2, in <module>
    import cv2
  File "/usr/lib/python3/dist-packages/thonny/backend.py", line 305, in _custom_import
    module = self._original_import(*args, **kw)
  File "/home/pi/.local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *
  File "/usr/lib/python3/dist-packages/thonny/backend.py", line 305, in _custom_import
    module = self._original_import(*args, **kw)
ImportError: /home/pi/.local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8


4 commentaires

Pour ce que ça vaut, j'ai le même problème lors de l'importation d'OpenCV sur mon Raspberry Pi Compute Module 3, donc au moins nous ne sommes pas seuls.


Le truc, c'est que cela fonctionne sur le terminal, mais pas sur thonny ide.


La solution de contournement pour ce problème OpenCV est de définir la variable d'environnement LD_PRELOAD (ce n'est pas la même chose qu'une variable en Python) pour provoquer le chargement de la bibliothèque manquante: LD_PRELOAD = / usr / lib / arm-linux-gnueabihf / libatomic.so .1 Malheureusement, je n'ai pas trouvé de moyen de définir des variables d'environnement dans l'EDI Thonny.


Je vous recommande de suivre ce problème GitHub sur la version PiWheels OpenCV. Espérons qu'une version fixe de la roue OpenCV sera bientôt disponible. github.com/piwheels/packages/issues/59


4 Réponses :


2
votes

Si vous installez opencv, essayez
dans votre environnement virtuel

"pip install opencv-contrib-python == 3.4.3.18"


0 commentaires

2
votes

J'étais également confronté au même problème en suivant ce totorial https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/

dans les commentaires est résolu dans ce lien et résolvez également la même chose pour moi grâce à lui: - https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and -raspbian-buster / # comment-572080

et voici ce qu'il écrit: -

#

Je suis le tutoriel avec RP4, 1 Go de mémoire, sur Buster.

Je voyais l'erreur suivante après avoir suivi l'étape 4 (a), la compilation complète, lors de la vérification de l'installation cv2 à partir de la console Python (étape 5):

ImportError: /home/pi/.virtualenvs/cv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: symbole non défini: __atomic_fetch_add_8

J'ai pu résoudre le problème avec les étapes suivantes:

1 - $ sudo find / -type f -name ' atom .so *' /usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0

2 - LD_PRELOAD = / usr / lib / arm-linux-gnueabihf / libatomic.so.1.2.0 python3

3 - Python 3.7.3 (par défaut, 3 avril 2019, 05:39:12) [GCC 8.2.0] sous linux Tapez «help», «copyright», «credits» ou «license» pour plus d'informations.

import cv2 print ( version cv2) 4.1.1

J'espère que cela aidera n'importe qui avec le même problème…

J

#

Aussi pour vos informations lorsque je suis un autre tuotrail pour le même écrivain, cela fonctionnait bien avec moi sans problème, voici le lien: -

https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/

Je suis encore 15 jours d'expérience en python et raspberry pi donc désolé pour toute erreur en ce qui concerne les avantages


0 commentaires

12
votes

Utilisez OpenCV contrib avec la bonne version.

pip install opencv-contrib-python==4.1.0.25

Voir la réponse à la fin de cet article.


2 commentaires

Cela a fonctionné pour moi sur un RPi 4. Je n'ai pas eu la chance d'essayer la réponse d'Ismael.


Malheureusement, cela n'a pas fonctionné sur mon RPi4, mais heureusement, stackoverflow.com/a/60237868/4831224 a fonctionné.



0
votes

Suivez ces étapes, cela a bien fonctionné pour moi:

Installez OpenCV sur Raspberry Pi

  1. sudo apt-get mise à jour

  2. sudo apt-get install libhdf5-dev -y && sudo apt-get install libhdf5-serial-dev -y && sudo apt-get install libatlas-base-dev -y && sudo apt-get install libjasper-dev -y && sudo apt -get installer libqtgui4 -y && sudo apt-get installer libqt4-test -y

  3. installation de pip3 --user opencv-contrib-python

  4. pip installer opencv-python

Tester OpenCV

Pour vérifier si OpenCV est correctement installé ou non, essayez d'importer OpenCV en tapant: Exécutez python shell python3

puis tapez: import cv2

Si aucune erreur n'apparaît, votre installation a réussi!

Pour savoir de quelle version d'OpenCV vous disposez, tapez la commande suivante: cv2. version

Bibliothèques facultatives recommandées

sudo apt installer libatlas3-base sudo apt-get installer python3-numpy

sudo apt mise à jour sudo apt-get install python3-matplotlib -y


0 commentaires