it-swarm.com.ru

команда cv2.imshow не работает должным образом в opencv-python

Я использую opencv 2.4.2, python 2.7 Следующий простой код создал окно с правильным именем, но его содержимое просто пустое и не показывает изображение:

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)

кто-нибудь знает об этой проблеме?

66
top.eng

imshow() работает только с waitKey():

import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()

(Весь цикл сообщений, необходимый для обновления окна, скрыт там.)

157
berak

Я нашел ответ, который работал для меня здесь: http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html

Если вы запускаете интерактивный сеанс ipython и хотите использовать highgui Windows, сначала выполните cv2.startWindowThread ().

Подробно: HighGUI - это упрощенный интерфейс для отображения изображений и видео из кода OpenCV. Это должно быть так же просто, как:

import cv2
img = cv2.imread("image.jpg")
cv2.startWindowThread()
cv2.namedWindow("preview")
cv2.imshow("preview", img)
30
Akhorus

Вы должны использовать cv2.waitKey(0) после cv2.imshow("window",img). Только тогда это будет работать.

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)
19
AdityaIntwala

Я столкнулся с той же проблемой. Я попытался прочитать изображение из IDLE и попытался отобразить его с помощью cv2.imshow(), но окно дисплея зависает и показывает, что pythonw.exe не отвечает при попытке закрыть окно.

Пост ниже дает возможное объяснение того, почему это происходит

pythonw.exe не отвечает

"По сути, не делайте этого из IDLE. Напишите сценарий и запустите его из командной консоли или сценария напрямую, если в Windows, назвав его с расширением .pyw и дважды щелкнув по нему. Очевидно, существует конфликт между IDLE собственный цикл событий и наборы инструментов GUI. "

Когда я использовал imshow() в скрипте и выполнял его вместо запуска напрямую через IDLE, это работало. 

7
rkdasari

Если вы работаете внутри консоли Python, сделайте это:

img = cv2.imread("yourimage.jpg")

cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()

Тогда если вы нажмете Enter на изображении он успешно закроет изображение, и вы можете продолжить выполнение других команд.

6
Dharma

добавить cv2.waitKey(0) в конце.

3
Pygirl

У вас есть все необходимые части где-то в этой теме:

if cv2.waitKey(): cv2.destroyAllWindows()

прекрасно работает для меня в режиме ожидания.

3
iamchriskelley

Если вы не сделали это работать, лучше поставить

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

в один файл и запустите его.

1
Joseph

У меня работает waitKey () с номером больше 0

    cv2.waitKey(1)
1
RamG

Если вы решите использовать «cv2.waitKey (0)», убедитесь, что вы написали «cv2.waitKey (0)» вместо «cv2.waitkey (0)», потому что эта строчная буква «k» может также заморозить вашу программу ,.

1
Guilherme Girão

ошибка: (-215) size.width> 0 && size.height> 0 в функции imshow

Эта ошибка вызвана тем, что изображение не найдено. Так что это не ошибка функции imshow.

0
Alvaro Fernandez