8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Archlinux / Python / Qt | 不能同时使用 OpenCV 和 matplotlib

Shmiel 1月前

37 0

当我尝试调用 pyplot.show 时,我收到以下错误消息。> QObject::moveToThread:当前线程(0x55cb11264ad0)不是对象的线程(0x55cb1226c700)。> 无法移动...

当我尝试调用 pyplot.show 时,收到以下错误消息。

> QObject::moveToThread: Current thread (0x55cb11264ad0) is not the object's thread (0x55cb1226c700).
> Cannot move to target thread (0x55cb11264ad0)

> qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/lib/python3.8/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, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx.

> Aborted (core dumped)

寻找答案我认为这是与 https://www.reddit.com/r/archlinux/comments/d6h3kl/python_qt_cant_import_matplotlibpyplot/ ,但我刚刚重新安装了很多软件包(几乎破坏了整个系统)并且我收到了同样的错误。

而且,matplotlib.pyplot.show() 和 opencv.imshow() 单独使用时工作正常,但是当我使用 opencv 进行某些处理并想在 pyplot.show() 中显示时出现错误。

我不知道如何像 u/tim-hilt 在他的帖子中所做的那样调试 Qt,所以这些就是我目前可以提供的所有信息。我知道如何做到这一点。

https://pastebin.com/YAgHMQKf

在此先感谢各位给予我答复。

帖子版权声明 1、本帖标题:Archlinux / Python / Qt | 不能同时使用 OpenCV 和 matplotlib
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Shmiel在本站《matplotlib》版块原创发布, 转载请注明出处!
最新回复 (0)
  • opencv 和 matplot 可以使用不同的 GUI 框架,它们一起运行时可能会出现问题——它们可能需要自己的事件循环,这可能会产生问题。

  • 但是它在一周前就可以正常工作了,问题是我需要绘制图形和图像,所以解决方案是仅使用 matplotlib 来显示它们,但现在它不起作用了。

  • 我曾使用过带有 matplotlib 的 opencv 以及 arch linux,没有遇到任何问题,因此你应该提供一个

  • 好吧,看起来情况更复杂,我有一个项目环境,它刚好可以工作,所以,真正的问题是我的 arch linux 安装中有多少软件包坏了?实际上,我重新安装了当前安装中的几乎所有软件包,但它无法与系统环境的主要 python 配合使用。如果有人可以告诉我在这里发布更多信息的想法,我会很乐意这样做。

  • 您可以导入 matplotlib 并使其使用 tkagg:

    import numpy as np
    import matplotlib
    
    matplotlib.use("tkagg")
    import matplotlib.pyplot as plt
    import cv2
    

    至少就我的情况而言是有效的。

  • 发生此问题是因为 opencv-python 和 matplotlib 的 GUI 后端依赖项之间存在冲突。如果您不使用 cv2.imshow(),那么您可以简单地删除 opencv-python 并安装 opencv-python-headless,它会安装没有任何 GUI 依赖项的包,从而消除与 matplotlib 的冲突。这解决了我的问题。只需在终端上运行以下命令:

    pip uninstall opencv-python
    pip uninstall matplotlib
    pip uninstall PyQt5
    
    pip install matplotlib
    pip install PyQt5
    pip install opencv-python-headless
    

    如果您使用的是 conda 环境,我建议将其废弃。改为创建一个新的虚拟环境,您可以将其放在与 conda 创建的环境相同的位置。Conda 创建的环境会对 GUI 后端造成严重破坏。是的,在创建新环境时使用旧版本的 Python。对我来说,Python 3.8 可以工作,而最新版本(即 Python 3.11)则不行。

    此处 还描述了此问题 .

  • 如果答案已经发布在另一个 Stack Overflow 问题中,正确的做法是将问题标记为重复,而不是在多个地方发布相同或非常相似的答案。此外,要求用户对您的帖子点赞也是不合适的。

  • base 1月前 0 只看Ta
    引用 9

    好的。抱歉,我不知道要求点赞​​是不道德的。我只是想确保人们不会因为这个解决方案有效而拒绝它。另外,我是在另一个堆栈(链接# 1)上发布问题的人,也是我找到了解决方案并回答了这个问题。我应该将自己的问题标记为重复还是将此问题标记为重复?

  • 这个问题比较老,浏览量和投票数也比较多,所以我建议你保留这个问题的答案,并将你的答案标记为与这个问题重复。我还建议你提前删除新问题上的答案,这样就不会出现两个答案。人们会根据自己的意愿在这里对你的答案投赞成/反对票。

返回
作者最近主题: