私はコードで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
最初に、インストールした可能性のあるOpenCVのバージョンをアンインストールします。 pip
を使用してインストールした場合:
Sudo pip uninstall opencv-python
次に、Linuxディストリビューションのパッケージマネージャーを使用してOpenCVをインストールしてみます。 Ubuntu/Debianの場合、これは次のとおりです。
Sudo apt-get install libopencv-dev python-opencv
この問題を解決し、解決策を投稿しました OpenCV githubページの関連する問題で 。しかし、あなたの便宜のために、ここにも投稿します。
私の場合、ほとんどすべてのソリューションを実行しました。
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.so
をusr/local/lib/python3.5/dist-packages/
に変更し、名前をcv2.so
に変更しました。所有しているvirtualenvごとに同じことを行います。 (論理的かどうかはわかりませんが、うまくいきました)。
その後、すべてがエラーなく正常に機能しました。
Ubuntu 18.04 LTSでpip
およびapt
からOpenCVパッケージをアンインストールし、ソースから直接OpenCVをインストールすることでこれを修正しました。たぶんこのチュートリアルは役立ちます:
https://www.pyimagesearch.com/2018/08/15/how-to-install-opencv-4-on-ubuntu/
上記の方法を試してみたところ、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プロジェクトをリロードして、もう一度試してください!
新しいpyqtをインストールすることで、この問題を修正できました。
anacondaを使用している場合は、以下に書き留めてください。
$ conda pyqtをインストール
仮想環境なしでopencvを実行する場合、この問題は発生しません。私のシステム:Kbuntu 18.04 LTS GTX 1050 CUDA 9.2 Tensorflow 1.9
@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/ ..
それが役立つことを願っています。
OpenCvの作者は、この問題はopenCvとlinux distroの異なるQtバージョンに由来すると述べています。つまり、openCvにはQt4が付属していますが、Qt5はすでにインストールされています。
@Varunによって提案されたソリューションに従い、それは私のために機能しました(Python 3)を使用します。ただし、システムの管理者権限がないため、ビルドファイルをインストールしませんでした。 cvパッケージが必要な場合cmake
に続いてmake
で十分だったので、cv2.*.gnu
からのファイル../build/lib/python3
フォルダーとsite-packages/cv2
私の仮想環境のフォルダー
理由はわかりませんが、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
。