web-dev-qa-db-ja.com

Pythonのopencvでエラー「QObject :: moveToThread:」を修正するには?

私はコードでpythonでopencv2を使用しています

_import cv2
cv2.namedWindow("output", cv2.WINDOW_NORMAL)       
cv2.imshow("output",im)
cv2.resizeWindow('output', 400,400)
cv2.waitKey(0)
cv2.destroyAllWindows()
_

エラーがあります

_QObject::moveToThread: Current thread (0x1d2c9cf0) is not the object's thread (0x1d347b20).
Cannot move to target thread (0x1d2c9cf0)
_

デバッグしてみると、cv2.waitKey(0)を使用したときに発生することがわかりました。どうすれば修正できますか?ありがとう

更新:3.3.0.0を使用しています。古いバージョンを使用すると、エラーが発生します

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvDestroyAllWindows, file /io/opencv/modules/highgui/src/window.cpp, line 577 Traceback (most recent call last): File "tools/demo_handbone.py", line 220, in <module> demo(net, im_name) File "tools/demo_handbone.py", line 159, in demo cv2.destroyAllWindows() cv2.error: /io/opencv/modules/highgui/src/window.cpp:577: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvDestroyAllWindows

14
John

最初に、インストールした可能性のあるOpenCVのバージョンをアンインストールします。 pipを使用してインストールした場合:

Sudo pip uninstall opencv-python

次に、Linuxディストリビューションのパッケージマネージャーを使用してOpenCVをインストールしてみます。 Ubuntu/Debianの場合、これは次のとおりです。

Sudo apt-get install libopencv-dev python-opencv
8
Mateen Ulhaq

この問題を解決し、解決策を投稿しました OpenCV githubページの関連する問題で 。しかし、あなたの便宜のために、ここにも投稿します。

私の場合、ほとんどすべてのソリューションを実行しました。

  • pip3 install opencv-pythonを使用したインストール
  • apt install python-opencvを使用したインストール
  • @ areche solution に従いましたが、kdelibs5-pluginsになりました。これはほとんどのデスクトップ環境にとって重要なモジュールであったため、アンインストールをあきらめました。

最後に、私のケースの解決策を見つけました

  • pip uninstall opencv-python my pythonおよび仮想環境のすべてのインスタンスで
  • pip3 uninstall opencv-python my pythonおよび仮想環境のすべてのインスタンスで
  • Sudo apt remove python-opencv

その後、最新のopencvをダウンロードしました。私の場合はopencv-4.1.1、ビルドします。構築用:

mkdir build; cd build; ccmake ..を押してからcを押し、再度cを押してからgを押してmakeファイルを生成し、ビルドが成功したらSudo make -j8をコピーしましたbuild\lib\python3\cv2.cpython.xxxxxx.sousr/local/lib/python3.5/dist-packages/に変更し、名前をcv2.soに変更しました。所有しているvirtualenvごとに同じことを行います。 (論理的かどうかはわかりませんが、うまくいきました)。

その後、すべてがエラーなく正常に機能しました。

2

Ubuntu 18.04 LTSでpipおよびaptからOpenCVパッケージをアンインストールし、ソースから直接OpenCVをインストールすることでこれを修正しました。たぶんこのチュートリアルは役立ちます:

https://www.pyimagesearch.com/2018/08/15/how-to-install-opencv-4-on-ubuntu/

1
Matthias

上記の方法を試してみたところ、python3.xインタープリターを使用する私のプロジェクトでopencvモジュールを動作させることができました。

いくつかの実験を行った後、次の手順を実行して動作するようにしました。

1)以下を使用して、マシンにopencv-pythonをインストールします。

Sudo pip3 install opencv-python

2)python3.xターミナルでバージョンを見つけます。

>>> import cv2
>>> cv2.__version__
'3.4.1'

3)OpenCVの同じバージョンを 公式ページ から入手します。

4) opencv tutorial で説明されているようにCMake設定を実行します。 PYTHON3_PACKAGES_PATHで指定された場所に注意してください

5)ビルドが実行されると、PYTHON3_PACKAGES_PATHで指定されたインストール場所に到達します。 cv2.cpython-*-gnu.soという名前のライブラリを現在のpython3.x dist-packagesパスに移動します。

usr/local/lib/python3.5/dist-packages/cv2

6)python3プロジェクトをリロードして、もう一度試してください!

1

新しいpyqtをインストールすることで、この問題を修正できました。

anacondaを使用している場合は、以下に書き留めてください。

$ conda pyqtをインストール

1
Charles Choi

仮想環境なしでopencvを実行する場合、この問題は発生しません。私のシステム:Kbuntu 18.04 LTS GTX 1050 CUDA 9.2 Tensorflow 1.9

0
Przemek

@Mateenの答えは、Ubuntuバージョン17以降を使用している場合に最適です。 Ubuntu 16の場合、ソースからopencv pythonをコンパイルすることをお勧めします。 @Varunが言及したように、 opencvチュートリアル に従ってください。ただし、python 3でopencvを正常にコンパイルするには、cmakeコマンドにいくつかのフラグを追加する必要があります。

cmake -DCMAKE_BUILD_TYPE=RELEASE -DPYTHON_DEFAULT_EXECUTABLE=$(which python3) -DPYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python3.5m/ -DPYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages/numpy/core/include/ ..

それが役立つことを願っています。

0
ptphucbk

OpenCvの作者は、この問題はopenCvとlinux distroの異なるQtバージョンに由来すると述べています。つまり、openCvにはQt4が付属していますが、Qt5はすでにインストールされています。

0
user1261273

@Varunによって提案されたソリューションに従い、それは私のために機能しました(Python 3)を使用します。ただし、システムの管理者権限がないため、ビルドファイルをインストールしませんでした。 cvパッケージが必要な場合cmakeに続いてmakeで十分だったので、cv2.*.gnuからのファイル../build/lib/python3フォルダーとsite-packages/cv2私の仮想環境のフォルダー

0
Kinan Halloum

理由はわかりませんが、matplotlibのインストールでエラーの問題が解決しました

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

Matplotlibがインストールされた新しいconda環境を準備したことを強調します。 Opencvは次のようにpdaによってconda envにインストールされましたpip install opencv-python opencv-contrib-python

0
intheblack