qt.qpa.xcb: could not connect to display | cv2.imshow 弹窗解决

举报
墨理学AI 发表于 2022/02/23 19:15:06 2022/02/23
【摘要】 报错处理
  • 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
  • 1-0


    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
    

    9-5


    9-5


    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。