web-dev-qa-db-fra.com

Comment corriger l'erreur "QObject :: moveToThread:" dans opencv en python?

J'utilise opencv2 en python avec le code

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

J'ai l'erreur comme 

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

Je débogue et trouve que c'est arrivé quand j'utilise cv2.waitKey(0). Comment dois-je résoudre ce problème? Merci

Mise à jour: J'utilise 3.3.0.0. Si j'utilise une version plus ancienne, j'ai une erreur

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

7
John

Tout d’abord, désinstallez toutes les versions d’OpenCV que vous avez installées. Si vous avez installé avec pip:

Sudo pip uninstall opencv-python

Ensuite, essayez d’installer OpenCV en utilisant le gestionnaire de paquets de votre distribution Linux. Pour Ubuntu/Debian, il s’agit de:

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

J'ai résolu ce problème sous Ubuntu 18.04 LTS en désinstallant les packages OpenCV de pip et apt et en installant OpenCV directement à partir du code source. Peut-être que ce tutoriel vous aidera:

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

0
Matthias

J'ai essayé la méthode mentionnée ci-dessus et j'ai pu faire fonctionner le module opencv pour mon projet utilisant un interpréteur python3.x.

Après avoir effectué quelques expériences, je l’ai obtenu en procédant comme suit:

1) Installez opencv-python sur votre machine en utilisant: 

Sudo pip3 install opencv-python

2) Sur le terminal python3.x, recherchez la version:

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

3) Obtenez la même version d'OpenCV depuis leur page officielle

4) Effectuez les réglages de CMake comme indiqué dans opencv tutorial . Notez l'emplacement spécifié dans PYTHON3_PACKAGES_PATH

5) Une fois la construction effectuée, accédez à l'emplacement d'installation spécifié dans PYTHON3_PACKAGES_PATH. Déplacez la bibliothèque nommée cv2.cpython - * - gnu.so vers le chemin actuel de python3.x dist-packages: 

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

6) Rechargez votre projet python3 et réessayez!

0
Varun Vijaykumar

Ce problème n'existe pas si vous exécutez opencv sans virtualenviroment. Mon système: Kbuntu 18.04 LTS GTX 1050 CUDA 9.2 Tensorflow 1.9

0
Przemek

La réponse de @Mateen fonctionne à merveille si vous utilisez Ubuntu version 17 ou ultérieure. Pour Ubuntu 16, il est préférable de compiler à partir de sources votre python ouvert. Comme @Varun l'a mentionné, suivez le didacticiel opencv . Cependant, pour compiler avec succès opencv avec Python 3, je dois ajouter quelques drapeaux dans la commande 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/ ..

J'espère que cela vous sera utile.

0
ptphucbk