运行依赖cv2 Qt的Yolact代码时遇Qt平台插件"xcb"加载失败问题求助
解决Qt平台插件"xcb"加载失败问题(Yolact+cv2场景)
我之前在conda环境里跑依赖cv2的视觉代码时,也碰到过一模一样的Qt插件加载坑,给你几个亲测有效的解决方案:
方案1:强制指定系统Qt插件路径
conda环境里cv2自带的Qt插件经常依赖不全,咱们可以让程序优先用系统安装的Qt插件。运行代码前先执行这个命令(注意替换成你系统Qt插件的实际路径,一般是/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms):
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
之后再启动你的Yolact代码,就能避开cv2包里的残缺插件了。
方案2:重装兼容版opencv-python
conda默认安装的cv2可能Qt编译选项有问题,试试用pip卸载后重装指定版本:
pip uninstall opencv-python opencv-contrib-python -y pip install opencv-python==4.5.5.62 opencv-contrib-python==4.5.5.62
这个版本我在Python3.7的conda环境里亲测和Qt兼容性拉满,你可以根据自己的环境调整合适的版本号。
方案3:检查并补全xcb依赖库
虽然你找到了libqxcb.so,但它可能缺少底层系统依赖。用ldd命令查一下:
ldd /home/zhengjie/anaconda3/envs/yolact-env/lib/python3.7/site-packages/cv2/qt/plugins/platforms/libqxcb.so
如果输出里有not found的库(比如libxcb-xinerama.so.0、libxcb-cursor0这类),直接用apt安装对应包:
sudo apt install libxcb-xinerama0 libxcb-cursor0
补完所有缺失的依赖再重启代码试试。
方案4:临时切换cv2显示后端(应急用)
如果上面的方法都没搞定,你可以直接绕开Qt,让cv2用其他显示后端:
在Yolact代码的最开头加上这两行:
import cv2 cv2.setWindowBackend('GTK')
这个方法虽然没法用cv2的Qt专属功能,但至少能让Yolact代码先跑起来救急。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

