qt.qpa.xcb: could not connect to display | cv2.imshow 弹窗解决
【摘要】 报错处理
🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
visual.py 可视化弹窗 cv2.imshow(“image”, img) 导致的报错
所运行代码
python nanodet.py ../../images/001.jpg
【一个目标检测-分类代码】
调用了:
/home/moli/anaconda3/envs/torch18/lib/python3.7/site-packages/ncnn/utils/visual.py
中的
def draw_detection_objects(image, class_names, objects, min_prob=0.0):
遇到报错如下:
...
22 = 0.84530 at 0.00 19.87 444.26 x 381.21
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/moli/anaconda3/envs/torch18/lib/python3.7/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc.
Aborted (core dumped)
原因分析
- 根本报错原因: cv2.imshow 方法需要弹窗,而当前编辑器环境不支持弹窗
大部分人遇到该报错原因
- win10 编辑器下运行代码【vscode | pycharm】,而所依赖的运行环境则是 Linux 服务器
- 单独的 xshell (bash工具)运行代码,不支持弹窗
什么情况可以弹窗成功?
- 本身代码运行依赖于主机本身,主机本身有可视化桌面
- 例如使用的是带桌面的Ubuntu虚拟机
- 使用 Xmanger 套件,这个里面的 xshell 是可以支持弹窗的,单独的xshell不行
解决方法
- 根据所调用的方法找到 imshow ,注释掉 imshow 方法,替换为 图片保存
# cv2.imshow("image", image)
cv2.imwrite("../../images/first.png", image)
正确运行输出如下【imshow 替换为 imwrite方法之后】
python nanodet.py ../../images/002.jpg
0 = 0.82579 at 273.52 143.55 107.69 x 278.77
0 = 0.78633 at 186.85 230.43 93.33 x 187.63
0 = 0.78081 at 413.71 212.12 105.20 x 204.88
29 = 0.64253 at 274.08 112.23 31.91 x 19.63
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)