2021/02/25 追記:知らない間にopencv-python
の最近のアップデートで修正されたようです。
症状
概要はタイトル通り。詳細は以下の通り。
環境
条件 | 内容 |
---|---|
OS | macOS Catalina 10.15.6 |
python環境 | pyenv + Anaconda2020-02/miniconda3-latest |
- Pyqt5 | 5.15.0 |
- opencv-python | 4.3.0 |
内容
opencv-python
とPyQt5
を同時使用するプログラムを実行したところ、長ったらしいエラーメッセージと共に強制終了。
objc[54311]: ClassQMacAutoReleasePoolTracker is implemented in bot /Users/hogehoge/opt/anaconda3/lib/python3.7/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (fugafuga) and /Users/hogehoge/opt/anaconda3/lib/python3.7/site-packages/cv2/.dylibs/QtCore (fugafuga). One of the two will be used. Which one is undefined.
objc[54311]: Class QT_ROOT_LEVEL_POOL__THESE_OBJECTS_WILL_BE_RELEASED_WHEN_QAPP_GOES_OUT_OF_SCOPE (同上).
objc[54311]: Class KeyValueObserver (同上).
objc[54311]: Class RunLoopModeTracker (同上).
(中略)
You might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
qt.qpa.plugin: Could not load the Qt platform plugin "cocoa" in "/Users/hogehoge/opt/anaconda3/lib/python3.7/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: cocoa, minimal, offscreen, webgl.
もうまずこのメッセージ量で諦めかけた。けどやらないわけにはいかなかった。
原因
とりあえずこいつが脳死で参照しているopencvのQtのpluginフォルダを見に行ったらほぼ空っぽ。importの順番かアルファベット順かはちゃんと確認してないけど、こいつが原因のようで。
試行錯誤
参考: https://qiita.com/sukoppu1102/items/f5c00b520da0fa5d2ff3
windowsでの不具合だが、エラー箇所が似ている。試しにQT_PLUGIN_PATH
をPyQtのほうに入れてみる
結果:ダメ
解決法
(2021/02/25修正)
最近修正されたようで、最新版にアップデートすると問題なく動作します。
pip install -U opencv-python