我试图在我的树莓派上测试我的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()
型
5条答案
按热度按时间fsi0uk1n1#
使用OpenCV contrib的正确版本。
第一个月
答案见this文章的结尾。
eufgjt7s2#
如果你pip安装opencv然后尝试
在虚拟环境中
“pip install opencv-contrib-python==3.4.3.18”
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方面的任何错误感到抱歉
2lpgd9684#
遵循这些步骤,它对我来说很好:
在树莓派上安装OpenCV
测试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
lokaqttq5#
**好吧,我也面临着类似的问题,就像现在2023年11月的靶心和假人老兄一样,这是可行的。
如果你也有类似的问题,我会帮你解决的。
首先检查您的系统中是否存在此文件。
字符串
如果有这些文件,那么现在我们必须进入下一步
LD_PRELOAD环境变量用于指定要在所有其他共享库之前加载的附加共享库列表。它可以用于强制程序使用共享库的特定版本。
在本例中,您尝试在运行Python之前预加载libatomic.so.1.2.0库。您提供的命令几乎是正确的,但您应该在python3命令之前使用LD_PRELOAD变量,如下所示:
型
现在运行python3并检查是否一切正常,导入cv 2,如果它成功完成,没有错误,那么就有了。
要使此问题永久化并解决此问题,请执行以下步骤
要永久设置LD_PRELOAD环境变量,通常需要修改shell配置文件。具体需要修改的文件取决于所使用的shell。常见的shell包括Bash、Zsh等。
下面是常用的Bash shell的说明:
1.在文本编辑器中打开Bash配置文件。该文件通常是以下文件之一:
使用您选择的文本编辑器,例如nano或vi。例如:
型
2.在文件末尾添加以下行:
型
这一行将LD_PRELOAD变量设置为指定的库。
保存文件并退出文本编辑器。
如果将该行添加到~/.bashrc,则可能需要重新启动终端或运行source ~/.bashrc以将更改应用到当前会话。
请注意,修改系统范围的配置文件(如/etc/bash.bashrc)可能需要root(管理员)权限。
请记住,全局设置LD_PRELOAD可能会影响所有程序,通常最好将其用作临时解决方案。通过确保适当的库兼容性来解决问题的根本原因是可能的首选解决方案。
以上步骤完成后,运行python3,检查import cv 2命令是否正常。
我希望这能解决你的问题。祝你今天愉快