Ошибка OpenCV Python: текущий поток не является потоком объекта - PullRequest
0 голосов
/ 14 сентября 2018

У меня ошибка при запуске простого кода с использованием модуля cv2.

Это просто:

import cv2

img = cv2.imread('sudoku.png',0)

cv2.imshow('image',img)

И происходит сбой со следующей ошибкой:

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

Я погуглил эту ошибку и перепробовал много вещей, но это не помогает.Я пытался установить без pip, я пытался использовать пошаговую установку (из официального OpenCV), но ничего не помогает.

Когда я запускаю:

cv2.__version__

Возвращает 3.4.3

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Согласно этой проблеме , опубликованной на OpenCV GitHub, это известная проблема, которую, как заявляет разработчик, практически невозможно исправить. По-видимому, это вызвано конфликтом в любых установках Qt в системе с Qt, поставляемым с OpenCV. Есть несколько предложений по удалению пакета libqt5x11extras5 из системы. Это может исправить это для некоторых, но любой, кто запускает эти библиотеки в дистрибутиве Linux, использующем оконный менеджер на основе Qt, сделает свою рабочую среду непригодной для использования, удалив этот пакет (попробовав его сам).

Вы можете попробовать собрать OpenCV из исходного кода, используя опцию WITH_GTK=ON при запуске cmake, которая будет использовать GTK вместо Qt, чтобы обойти конфликт. Тем не менее, это трудно использовать в Python при использовании виртуальных сред.

0 голосов
/ 14 сентября 2018

Сначала, предполагая Linux, попробуйте следующее,

LD_DEBUG=files python -c "import cv2"

или

LD_DEBUG=files python -c "import cv2 ; img = cv2.imread('myimage.png',0) ; cv2.imshow('image',img) ; cv2.waitKey(0)"

На моей машине произошел сбой в одной из библиотек blas. Я обновил эту библиотеку, и теперь код работает без ошибок. Это старая ошибка, ее можно найти в ряде интернет-сообществ.

import cv2

img = cv2.imread('sudoku.png',0)

cv2.imshow('image',img)

cv2.waitKey(0)
...