Qt和opencv应用程序无法在虚拟环境中运行

yrdbyhpb  于 2022-11-15  发布在  其他
关注(0)|答案(4)|浏览(198)

我使用pyqt5和opencv创建了一个GUI应用程序。该应用程序在不激活虚拟环境的情况下工作正常,但当我激活虚拟环境并运行该应用程序时,它显示以下错误:

QObject::moveToThread: Current thread (0x125b2f0) is not the object's thread (0x189e780).
Cannot move to target thread (0x125b2f0)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/deepak/Desktop/SampleApp/lib/python3.9/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, webgl.

Aborted

我试着运行一个示例pyqt5代码(没有导入opencv)和另一个代码(只使用opencv),这两个代码在虚拟环境中都运行得很好。
操作系统:鹦鹉操作系统4.11
Python版本:3.9.2

l7mqbcuq

l7mqbcuq1#

问题是编译opencv时使用的Qt版本与PyQt5使用的版本不相似,从而导致冲突。
一个可能的解决方案是指示使用PyQt5使用的Qt插件。

import os
from pathlib import Path

import PyQt5
from PyQt5.QtWidgets import QWidget # others imports
import cv2

os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.fspath(
    Path(PyQt5.__file__).resolve().parent / "Qt5" / "plugins"
)
# ...

对于PySide2:

import os
from pathlib import Path

import PySide2
from PySide2.QtWidgets import QWidget # others imports
import cv2

os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.fspath(
    Path(PySide2.__file__).resolve().parent / "Qt" / "plugins"
)
# ...

更新:

更好的选择是使用QLibraryInfo来获取插件文件夹路径:

import os

from PyQt5.QtCore import QLibraryInfo
# from PySide2.QtCore import QLibraryInfo

import cv2

os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = QLibraryInfo.location(
    QLibraryInfo.PluginsPath
)
ncecgwcz

ncecgwcz2#

我通过降级cv 2版本解决了这个问题,只需运行
python3 -m pip安装开放式控件-python==4.1.0.25
我以前有个网站4.5.3.56

hzbexzde

hzbexzde3#

一个简单的解决方案是删除您环境中的所有openCV
pip uninstall opencv-python opencv-python-headless opencv-contrib-python
然后安装
pip install opencv-python-headless

dsekswqp

dsekswqp4#

我找到了解决这个问题方法,通过pip安装opencv-python-headless而不是opencv-python。但是使用opencv-python-headless,当使用cv2.imshow或cv2.namedWindow尝试打开图像窗口时,它会导致opencv问题。
我收到此错误
回溯(最近的呼叫排在最后):文件“",第1行,在cv 2中。错误:/pip-req-build-4x 5 kub 8 r/opencv/模块/高图形用户界面/源代码/窗口。错误:(-2:未指定的错误)函数未实现。请使用Windows、GTK+ 2.x或可可支持重建库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置函数“cvNamedWindow”中的脚本

相关问题