opencv 未定义符号:__atomic_fetch_add_8

s3fp2yjn  于 11个月前  发布在  其他
关注(0)|答案(5)|浏览(96)

我试图在我的树莓派上测试我的picamera在thonny python ide上,但我得到了一个错误:

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

字符串
我已经试过寻找可能的解决方案,但无法做到这一点,因为我不明白他们试图说的东西-latomic。我是相当新的这一点。

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()

fsi0uk1n

fsi0uk1n1#

使用OpenCV contrib的正确版本。
第一个月
答案见this文章的结尾。

eufgjt7s

eufgjt7s2#

如果你pip安装opencv然后尝试
在虚拟环境中
“pip install opencv-contrib-python==3.4.3.18”

eaf3rand

eaf3rand3#

我在跟踪这个totorial https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/时也遇到了同样的问题。
在评论中解决了这个链接,也解决了同样的我感谢他:-https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/#comment-572080
他是这样写的

我按照教程与RP 4,1GB内存,巴斯特。
在执行步骤4(a)(完整编译)之后,当从Python控制台验证cv 2安装时(步骤5),我看到以下错误:
/home/pi/.virtualenvs/cv/lib/python3.7/site-packages/cv 2/cv2.cpython-37m-arm-linux-gnueabihf.so:未定义符号:__atomic_fetch_add_8
我可以通过以下步骤解决这个问题:
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 python 3
3 - Python 3.7.3(默认,Apr 3 2019,05:39:12)[GCC 8.2.0]在Linux上键入“help”,“copyright”,“credits”或“license”以获取更多信息。
导入cv 2打印机(cv 2.版本)4.1.1
希望这对任何有同样问题的人都有帮助...
J

也为您的信息,当我按照另一个tuotrail为同一个作家,它是工作与我没有问题,这里是链接:-
https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/
我仍然在Python和树莓派15天的经验,所以在python方面的任何错误感到抱歉

2lpgd968

2lpgd9684#

遵循这些步骤,它对我来说很好:

在树莓派上安装OpenCV

  1. sudo apt-get更新
  2. sudo apt-get install libhdf5-dev -y && sudo apt-get install libhdf5-serial-dev -y && sudo apt-get install libjasper-dev-y && sudo apt-get install libqtgui4 -y && sudo apt-get install libqt4-test -y
  3. pip3 install --user opencv-contrib-python
  4. pip install opencv-python

测试OpenCV

要检查OpenCV是否正确安装,请尝试输入以下命令导入OpenCV:Run python shell python3
输入:import cv 2
如果没有显示错误,则说明安装成功!
要了解您使用的OpenCV版本,请键入以下命令:cv 2.version

推荐可选库

sudo apt install libatlas3-base sudo apt-get install python 3-numpy
sudo apt update sudo apt-get install python3-matplotlib -y

lokaqttq

lokaqttq5#

**好吧,我也面临着类似的问题,就像现在2023年11月的靶心和假人老兄一样,这是可行的。

如果你也有类似的问题,我会帮你解决的。

首先检查您的系统中是否存在此文件。

/usr/lib/arm-linux-gnueabihf/libatomic.so.1
/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0

字符串

如果有这些文件,那么现在我们必须进入下一步

LD_PRELOAD环境变量用于指定要在所有其他共享库之前加载的附加共享库列表。它可以用于强制程序使用共享库的特定版本。
在本例中,您尝试在运行Python之前预加载libatomic.so.1.2.0库。您提供的命令几乎是正确的,但您应该在python3命令之前使用LD_PRELOAD变量,如下所示:

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


现在运行python3并检查是否一切正常,导入cv 2,如果它成功完成,没有错误,那么就有了。

要使此问题永久化并解决此问题,请执行以下步骤

要永久设置LD_PRELOAD环境变量,通常需要修改shell配置文件。具体需要修改的文件取决于所使用的shell。常见的shell包括Bash、Zsh等。

下面是常用的Bash shell的说明:

1.在文本编辑器中打开Bash配置文件。该文件通常是以下文件之一:

  • 仅适用于用户:~/.bashrc
  • 对于所有用户:/etc/bash.bashrc
    使用您选择的文本编辑器,例如nano或vi。例如:
nano ~/.bashrc

2.在文件末尾添加以下行:

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


这一行将LD_PRELOAD变量设置为指定的库。
保存文件并退出文本编辑器。

如果将该行添加到~/.bashrc,则可能需要重新启动终端或运行source ~/.bashrc以将更改应用到当前会话。

请注意,修改系统范围的配置文件(如/etc/bash.bashrc)可能需要root(管理员)权限。
请记住,全局设置LD_PRELOAD可能会影响所有程序,通常最好将其用作临时解决方案。通过确保适当的库兼容性来解决问题的根本原因是可能的首选解决方案。

以上步骤完成后,运行python3,检查import cv 2命令是否正常。

我希望这能解决你的问题。祝你今天愉快

相关问题