OpenCV:即使找到了Qt平台插件“xcb”,但在“”中仍无法加载,

4

我在使用virtualenvwrapper(我在visual studio code中使用wsl)设置venv之后,在Ubuntu WSL上安装了opencv-python。当运行以下代码时(该代码出现在OCR指南中的一篇文章中):

import argparse
import cv2

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True)
args = vars(ap.parse_args())

image = cv2.imread(args["image"])
cv2.imshow("I", image)

使用终端输入以下命令:

python script.py --image temp.png

我获得:

qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/ben123/.local/bin/.virtualenvs/ocr_venv/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.

在 VSCode 中的解释器是正确的(venv 的那一个),当我输入 pip list 时,我的输出结果是:
Package       Version
------------- --------
numpy         1.22.2
opencv-python 4.5.5.62
pip           22.0.3
setuptools    60.6.0
wheel         0.37.1

由于我花了这么多时间,仍然没有任何进展,因此在这一点上会非常感激任何帮助。

我尝试过的方法:

  1. 按照此指南安装它。出现了同样的错误。
  2. 按照该网站上较早的指南进行操作,更加复杂,效果也不好。
  3. 卸载opencv-python并重新安装opencv-python / opencv-python-contrib / opencv-python-headless / opencv-python-contrib-headless(每次只安装其中一个)
  4. 参考此线程,因为它有类似的问题。
  5. 重置我的wsl几次,以确保我没有多个python / opencv版本引起的混乱。
  6. 尝试使用官方文档直接向wsl venv安装opencv
  7. 试图完全放弃wsl,并使用anaconda安装opencv,但即使如此也无法工作。
5个回答

6
卸载opencv并安装类似无界面版本,这对我有用。
$ pip install opencv-python-headless

5

我在完全不同的情境下遇到了相同的错误。

发现问题是由于虚拟环境中安装了 PyQt5。 请检查您的路径是否有 PyQt.

/home/ben123/.local/bin/.virtualenvs/ocr_venv/lib/python3.8/site-packages/

如果有,请将其删除。

$ pip uninstall <PyQT package installed>

例子:

$ pip uninstall PyQt5

然后重新安装opencv-python

$ pip uninstall opencv-python
$ pip install opencv-python

希望这能够起作用!

无法在目录中找到:PIL、pip、Pillow-9.0.1.dist-info、pip-22.0.3.dist-info、Pillow.libs、pip-22.0.3.virtualenv、__pycache__、pkg_resources、_distutils_hack、pycodestyle-2.8.0.dist-info、_virtualenv.pth、pycodestyle.py、_virtualenv.py、pytesseract、autopep8-1.6.0.dist-info、pytesseract-0.3.8.dist-info、autopep8.py、setuptools、cv2、setuptools-60.6.0.dist-info、distutils-precedence.pth、setuptools-60.6.0.virtualenv、numpy、toml、numpy-1.22.2.dist-info、toml-0.10.2.dist-info、numpy.libs、opencv_contrib_python_headless-4.5.5.62.dist-info、opencv_contrib_python_headless.libs和wheel。 - benjamin
我还能尝试些什么吗? - benjamin
你能发布"site_packages"目录的内容或者"pip freeze"命令的输出吗?那里一定有一些试图使用Qt并且导致崩溃的东西。我们需要重新安装它。 - Shei Pi
pip freeze: autopep8==1.6.0 numpy==1.22.2 opencv-contrib-python-headless==4.5.5.62 Pillow==9.0.1 pycodestyle==2.8.0 pytesseract==0.3.8 toml==0.10.2 - benjamin

1
为了显示有关wsl的图形信息,您应该配置与x11相关的内容。 例如:您可以使用MobaXterm进行图形显示。

1

从你的代码中删除cv2.imshow。你的操作系统没有图形界面,无法显示图像。


他正在努力让它正常工作,所以我不认为删除代码是一个解决办法。 - Richard Tran

0
使用miniconda虚拟环境,以下是我完成的步骤:
首先,我卸载了opencv:
pip uninstall opencv-python

然后,我检查了一下这个路径中是否能找到PyQt文件。

~/miniconda3/lib/python3.10/site-packages/

我找到了这些:
  • PyQt5
  • PyQt5_sip-12.11.0-py3.10-linux-x86_64.egg
  • PyQt5_sip.pth
我使用rm -r <文件名>命令将其删除(因为不知何故,我无法使用pip或conda进行删除)。
之后,我重新安装了opencv-python。
pip install opencv-python

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接