尝试调用 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() 中显示时,错误就出现了.
我不知道如何调试 Qt,就像 u/tim-hilt 在他的帖子中所做的那样,所以这就是我目前可以提供的所有信息。我知道怎么做了。
提前感谢我能得到的任何回复。
您可以导入 matplotlib 并使其使用 tkagg:
import numpy as np
import matplotlib
matplotlib.use("tkagg")
import matplotlib.pyplot as plt
import cv2
至少在我的案例中起作用。