파이썬의 opencv에서 "QObject::moveToThread:" 오류를 수정하는 방법은 무엇입니까?
파이썬의 opencv에서 "QObject::moveToThread:" 오류를 수정하는 방법은 무엇입니까?
나는 코드와 함께 파이썬에서 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)
디버그를 해보니 사용할 때 발생한 현상입니다. 어떻게 고쳐야 할까요? 감사해요.
업데이트: 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 버전을 제거합니다. 다음을 사용하여 설치한 경우:
sudo pip uninstall opencv-python
그런 다음 Linux distro의 패키지 관리자를 사용하여 OpenCV를 설치해 보십시오. Ubuntu/Debian의 경우 다음과 같습니다:
sudo apt-get install libopencv-dev python-opencv
나는 위에서 언급한 방법을 시도했고 파이썬 3.x 인터프리터를 사용하는 내 프로젝트에서 opencv 모듈을 작동시킬 수 있었다.
몇 가지 실험을 수행한 후 다음 단계를 수행하여 작동했습니다:
1) 다음을 사용하여 시스템에 opencv-python을 설치합니다:
sudo pip3 install opencv-python
2) python 3.x 터미널에서 다음 버전을 찾습니다:
>>> import cv2
>>> cv2.__version__
'3.4.1'
3) 에서 동일한 버전의 OpenCV를 가져옵니다.
4) 에서 언급한 대로 CMake 설정을 수행합니다. 에서 지정한 위치를 기록합니다
5) 빌드가 수행되면 에 지정된 설치 위치로 이동합니다. 이름이 지정된 라이브러리를 현재 python 3.x dist-packages 경로로 이동합니다:
usr/local/lib/python3.5/dist-packages/cv2
6) python3 프로젝트를 다시 로드하고 다시 시도하십시오!
가상 환경 없이 opencv를 실행하는 경우에는 이 문제가 발생하지 않습니다. 내 시스템: Kbuntu 18.04 LTS GTX 1050 CUDA 9.2 텐서플로 1.9
Ubuntu 버전이 17 이상인 경우 @Mateen의 답변이 좋습니다. Ubuntu 16의 경우 opencv 파이썬을 소스에서 컴파일하는 것이 더 좋습니다. @Varun이 언급한 바와 같이, 을 따르십시오. 그러나 파이썬 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/ ..
그것이 도움이 되기를 바랍니다.
Ubuntu 18.04 LTS에서 OpenCV 패키지를 제거하고 소스에서 직접 OpenCV를 설치하여 이 문제를 해결했습니다. 이 튜토리얼이 도움이 될 수도 있습니다:
https://www.pyimagesearch.com/2018/08/15/how-to-install-opencv-4-on-ubuntu/
이유는 모르겠지만 매트플롯리브를 설치하면 오류 문제가 해결되었습니다
QObject::moveToThread: Current thread (0x1d2c9cf0) is not the object's thread (0x1d347b20).
Cannot move to target thread (0x1d2c9cf0)
매트플롯립이 설치된 신선한 콘다 환경을 준비했다는 점을 강조한다. Opencv는 다음과 같이 pipin conda env에 의해 설치되었습니다.
openCv 작성자는 이 문제가 openCv와 linux distro의 다른 Qt 버전에서 발생한다고 말한다. 즉, openCv는 Qt4와 함께 제공되지만 Qt5는 이미 설치되어 있습니다.
나는 @Varun이 제안한 솔루션을 따랐고 그것은 나에게 효과가 있었다 (Python 3 사용). 하지만 cv 패키지가 필요한 시스템에 대한 관리자 권한이 없기 때문에 빌드된 파일을 설치하지 않았습니다. A, 그 다음으로 충분했고, 그 다음에 나는 폴더에서 파일을 가져와서 내 가상 환경의 폴더에 있는 파일을 교체했다
나는 새로운 pyqt를 설치하여 이 문제를 해결할 수 있었다.
아나콘다를 사용하는 경우 아래에 기록하십시오:
$ 콘다 설치 pyqt
저는 이 문제를 해결하고 해결책을 올렸습니다. 하지만 당신의 편의를 위해 여기에도 올릴 것입니다.
제 경우에는 거의 모든 솔루션을 수행했습니다:
- pip3 install opencv-messages를 사용하여 설치
- apt install python-opencv를 사용하여 설치
- 따라서 대부분의 데스크톱 환경에서 중요한 모듈이 무엇인지 알게 되어 제거하는 것을 포기하게 되었습니다.
마침내, 나는 내 사건에 대한 해결책을 찾았다
- python 및 가상 환경의 모든 인스턴스에서
- python 및 가상 환경의 모든 인스턴스에서
sudo apt remove python-opencv
그리고 나서 나는 가장 최근의 opencv를 다운로드했고, 나의 경우, 나는 그것을 짓는다:
를 누르고 다시 누른 다음 Make files를 생성한 다음 성공적으로 빌드한 후에 에 복사하여 가지고 있는 각 가상 env에 대해 Do same으로 이름을 변경했습니다.(논리적인지는 모르겠지만, 저에게는 효과가 있었습니다.).
그리고 나서 모든 것이 오류 없이 잘 작동했다.
이 문제는 Qt 라이브러리의 설치 충돌로 인해 발생할 수 있습니다. 다음 명령에 따라 수정되었습니다:
sudo apt-get remove libqt5x11x5libqt5x11x5-dev
저도 같은 문제가 있었어요. opencv imshow 함수를 사용하면 이동 스레드 오류가 발생했습니다. 결국 나는 Ubuntu 16.04에 pyqt5가 미리 설치되어 있는 반면 OpenCV에는 pqty4가 필요하다는 것을 알았다. 따라서 Qt 라이브러리의 설치 충돌로 인해 발생할 수 있습니다. 다음 명령에 따라 수정되었습니다:
sudo apt-get remove libqt5x11extras5 libqt5x11extras5-dev
내가 데모를 실행하려고 했을 때도 같은 문제가 있었다. 내 OS는 Centos7이고 나는 qt에 관한 몇몇 애플리케이션을 제거한다.
qt에 대한 응용 프로그램을 찾습니다.
yum list installed |grep qt
응용 프로그램을 제거하다
yum -y remove xxx...
스레드가 조금 오래된 것은 알지만 다른 사람을 위해 게시하는 것은, 나는 같은 문제에 직면했고 그것은 실행 후에도 발생했기 때문이다
pip3 uninstall opencv-python
내 시스템에 내가 확인한 다른 버전의 open-cv가 있었다
pip list
(pip은 처음 발견한 버전만 제거하는 것 같습니다) 그래서 이 명령을 다시 실행했습니다
pip3 uninstall opencv-python
이제 opencv by 설치만 하면 됩니다
pip install opencv-python
나를 위해 일했다.
나도 같은 문제를 받았어, 나도 버전 문제 때문이야. 내 리눅스 시스템의 환경은 다음과 같습니다:
$ cat /etc/lsb-release
...
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
$ date
Tue Aug 11 11:43:16 KST 2020
$ python --version
Python 3.7.8
$ pip list|grep Qt
PyQt5 5.15.0
PyQt5-sip 12.8.0
$ pip list|grep opencv-python
opencv-python 4.3.0.38
opencv-python을 로 다운그레이드했습니다.
$ pip uninstall opencv-python
$ pip install opencv-python==4.3.0.36
$ pip list|grep opencv-python
opencv-python 4.3.0.36
이 오류는 4.3.0.38 이상의 openCv 버전에서 발생합니다. 저는 pip로 4.3.0.36 버전을 시도했고 이 문제를 해결했습니다. 하지만 낮은 버전에서는 윈도우가 올바르게 로드되지 않는 등 많은 문제에 직면했습니다. 만약 우분투를 사용하고 있다면, 저는 당신의 시스템에서 opencv를 완전히 제거하고 명령어 g로 다시 설치하는 것을 추천합니다아래에도,
pip install opencv-contrib-python3
이 문제는 아나콘다 가상 환경을 사용하고 있으며 둘 다 수행한 경우에 발생할 수 있습니다. 이로 인해 두 PyQt 버전 간에 충돌이 발생하고 오류가 발생합니다.
솔루션은 을 통해 PyQt를 설치하는 것입니다.
(1) 또는 에 의존하는 모든 것, 예를 들어.
다음을 가리킨다:
pip3 uninstall opencv-python
pip3 install opencv-python==4.1.1.26
opencv-python 4.5 -> 4.1.1.26을 다운그레이드하면 OK
pip3 >= 20.3 use: pip3 install --use-deprecated=legacy-resolver opencv-python==
pip3 >= 9.0 use: pip3 install opencv-python==
그리고 나는 노력한다
pip3 uninstall opencv-python
pip3 install opencv-python==4.3.0.36
그래, 나도
이것은 호환성 문제입니다. 심지어 "콘다 install pyqt"의 방법도 작동한다. 특정 버전의 opencv 라이브러리를 설치할 수 있는지 확인하십시오. 상위 버전에서는 동일한 문제가 발생할 수 있습니다.
pip install opencv-python==4.1.1.26
pip install opencv-contrib-python==4.1.1.26
건배.
OpenCV 버전에서 문제가 발생했습니다. 다음 버전으로 모든 문제가 해결되었습니다.
pip uninstall opencv-python
pip install opencv-python==4.1.2.30
나는 콘다와 함께 파이썬 3.8.5를 사용하고 있다
나도 pyqt 업그레이드를 시도해 보았지만 작동하지 않았다
opencv-python lib을 다시 설치하면 됩니다. 괜찮아요.
pip uninstall opencv-python
pip install opencv-python=4.2.0.34
버전 4.2는 이 오류를 발생시키지 않는 최신 opencv 파이썬입니다. 4.3이나 4.4+를 해봤는데 안 되네요.
이 질문의 주된 이유는 PyQt5와 Opencv의 충돌일 수 있습니다.
나도 같은 문제를 겪었지만 해결책을 찾지 못했다. 시행착오를 거쳐 내 버전이 손상된 것을 발견했다. 결과적으로, 나는 그것을 삭제하고 새로운 것을 설치했다. 실행하여 제거한 다음 명령을 사용하여 설치하는 두 가지 옵션 중 하나를 사용할 수 있습니다.
사실, 나는 내 문제 때문에 이 방법을 사용했다.
- 아나콘다를 열다
- 환경 섹션으로 이동하여 다음과 같이 환경을 선택합니다. 그런 다음 설치된 패키지를 클릭하고 검색합니다. 패키지를 선택한 후 제거합니다. 그런 다음 설치되지 않음을 선택하고 를 검색하여 다시 설치하십시오. 올바른 버전을 설치하려면 주의하십시오.
이 문제는 opencv-python 자체 Qt5와 다른 패키지에서 사용하는 Qt5 간의 충돌로 인해 발생합니다. 이 경우 를 통해 설치된 다음 의 종속성으로도 설치됩니다. 제 해결책은 다음과 같습니다:
- 제거:
- 설치 및:
이제 를 통해 설치할 필요가 없으며 충돌이 해결되었습니다.
참고: 최신 버전 4.5.4.x에서 오류가 발생합니다. 이 경우 4.5.1.x와 같은 하위 버전을 사용하는 것이 좋습니다.
를 사용하는 경우 다음 답변을 참조하십시오:
TL;DR:
애플리케이션에서 opencv의 GUI 기능 없이 PyQt를 사용하고 싶었기 때문에 해결책은 현재 버전의 opencv-python을 제거하는 것이었다. 이렇게 하면 충돌하는 Qt 라이브러리 없이 opencv가 설치됩니다.
참조:
파이썬 버전을 3.9.13에서 3.8.10으로 다운그레이드합니다
conda install python=3.8.10
pip install opencv-python==4.5.2.54
나를 위해 일했다.
내 시스템 환경: Ubuntu 20.04 Anaconda 3.8
나는 이미지를 표시하고 이 문제에 직면하기 위해 matplotlib을 사용했다. 날 위해 일하지 않는다.
그리고 잘 작동합니다.