アノテーションソフト「Labelme」を起動させようとしたらGUI関連のエラー

前書き

アノテーションソフトを活用したいと思いまして、Labelmeのインストールをおさらいしてみました。
Labelmeの強みはセマンティック・セグメンテーションを実装する際に、訓練データの準備において活用可能な点です。
melheaven.hatenadiary.jp

おすすめ記事です。
qiita.com

Labelmeのインストール元です。
github.com

conda create -n labelme python=3.6
conda activate labelme
pip install labelme

誰でもできる・・・できねーよ!!

エラー

以下のようなエラーが出力されました。
どうやらGUIツールキットであるQtを動作させる際に、xcb関連のモジュールがインストールされていないと仮説を立てました。

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" 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: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted (core dumped)

forum.qt.io

解決策

export QT_DEBUG_PLUGINS=1

これでQtがロードしようとしているプラグインに関する情報を出力してくれます。デバッグモードで問題解決がしやすくなりそうです。

doc.qt.io

コマンド"labelme"で実行してみます。

Got keys from plugin meta data ("xcb")

Cannot load library /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: undefined symbol: _ZN11QFontEngine14bitmapForGlyphEj6QFixedRK10QTransform)

libqxcb.soが無いそうです。私の場合はlibxcb-xinerama0が存在してなかったのでlibxcb-xinerama0をインストールしました。

 sudo apt install libxcb-xinerama0

以下の記事曰く、このコマンドでどのモジュールが不足しているのかを見つけられます。

ldd /path/to/python/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so | grep "not found"

qiita.com

解決しました!