在运行基于 segment-anything 的标注工具SAM-TOOL 报错

在运行基于 segment-anything 的标注工具SAM-TOOL 报错

Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/home/anaconda3/envs/sam/bin/platforms" ...
loaded library "/home/anaconda3/envs/sam/lib/python3.9/site-packages/cv2/qt/plugins/platforms/libqxcb.so"
QObject::moveToThread: Current thread (0x55a94757fe30) is not the object's thread (0x55a949293d70).
Cannot move to target thread (0x55a94757fe30)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/anaconda3/envs/sam/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.


已解决,opencv-python 和 PyQt5 版本冲突,卸载 opencv-python
安装 opencv-python-headless

引用 皆我百晓生 小程序回复内容作答:
根据错误信息,发现在运行SAM-TOOL时,出现了关于Qt平台插件的错误。其中报错信息显示无法加载Qt平台插件"xcb"。下面是一些可能的解决方法:

  1. 确认Qt安装:首先,请确保已正确安装Qt库。确保安装了SAM-TOOL所需的Qt版本,并且相关的平台插件也已正确安装。

  2. 设置LD_LIBRARY_PATH环境变量:尝试设置LD_LIBRARY_PATH环境变量指向Qt库所在的路径。在终端中执行以下命令,以更新环境变量:

    export LD_LIBRARY_PATH=/path/to/Qt/libraries:$LD_LIBRARY_PATH
    

    /path/to/Qt/libraries替换为Qt库文件(.so/.dll文件)所在的实际路径。

  3. 确认插件位置:检查报错信息中提供的Qt插件路径/home/anaconda3/envs/sam/lib/python3.9/site-packages/cv2/qt/plugins/。确保路径中存在xcb插件文件libqxcb.so

    如果缺少该文件,可能是因为Qt插件没有正确安装。尝试重新安装Qt,并确保安装包含了xcb插件。

  4. 检查Python环境:确保您使用的Python环境与SAM-TOOL的要求匹配。可能需要安装或升级特定版本的Python、Qt以及其他相关依赖项。

如果上述解决方法不起作用,建议查阅SAM-TOOL的官方文档、GitHub仓库或社区支持论坛,以获取更详细的帮助和支持。

【以下回答由 GPT 生成】

这个问题是由于缺少 Qt 平台插件导致的。解决这个问题需要考虑两个方面:安装缺失的插件和设置环境变量。

以下是解决该问题的步骤:

  1. 确认 PyQt5 或 PySide2 已经正确安装。可以使用以下命令检查是否已经安装了这些依赖包:

    pip freeze | grep -E "PyQt5|PySide2"

    如果没有安装,可以使用以下命令安装之一:

    pip install PyQt5

    pip install PySide2

  2. 确认你已经安装了 Qt 平台插件。这些插件通常位于 Qt 安装目录的 plugins/platforms 目录下。在这个目录下,应该至少有一个 .so 文件,比如 libqxcb.so。如果没有这些插件,你可以尝试重新安装 Qt。

  3. 设置环境变量。在运行 SAM-TOOL 之前,需要将 Qt 平台插件所在的路径添加到 LD_LIBRARY_PATH 环境变量中。假设插件所在的目录是 /home/anaconda3/envs/sam/lib/python3.9/site-packages/cv2/qt/plugins/,可以使用以下命令添加环境变量:

    export LD_LIBRARY_PATH=/home/anaconda3/envs/sam/lib/python3.9/site-packages/cv2/qt/plugins/:$LD_LIBRARY_PATH

    请注意,这个命令只对当前会话有效。如果希望将其永久添加到环境变量中,可以将此命令添加到你的系统配置文件中,比如 ~/.bashrc~/.profile

  4. 运行 SAM-TOOL。现在你应该能够正常运行 SAM-TOOL 了。如果仍然遇到问题,请确保你所使用的 Qt 版本与 SAM-TOOL 所需的版本兼容。你可以尝试更新 Qt 或 SAM-TOOL 到最新版本。

总结:要解决 SAM-TOOL 运行时的 Qt 报错和缺失插件问题,你需要安装缺失的依赖包(PyQt5 或 PySide2)、确认安装了正确的 Qt 平台插件、设置正确的环境变量并确保 Qt 版本与 SAM-TOOL 兼容。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^