Почему я не получил окна ответа при вызове cv2.imshow() в записной книжке Jupyter

#python #opencv #jupyter-notebook #spyder

Вопрос:

Всякий раз, когда я запускаю приведенный ниже код в блокноте Jupyter, выскакивает окно и перестает отвечать. То, что я делал, — это преобразовывал изображение в цветовое пространство HSV.

 import cv2

im = cv2.imread("lena.png", 1)
#cv2.imshow("1", im)
#cv2.waitKey()

im_HSV=[]
im_HSV = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
cv2.imshow("HSV", im_HSV)
 

Тем не менее, код отлично работает на spyder.

Ответ №1:

У вас есть 2 способа решения этой проблемы,

А) Использование matplotlib :

 %matplotlib inline
#The line above is necesary to show Matplotlib's plots inside a Jupyter Notebook

import cv2
from matplotlib import pyplot as plt

#Import image
image = cv2.imread("input_path")

#Convert to HSV
im_HSV = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)

#Show the image with matplotlib
plt.imshow(im_HSV)
plt.show()
 

Другой способ-это
Б) Использование функции waitkey opencv

 
import cv2

#Import image
image = cv2.imread("input_path")

#Convert to HSV
im_HSV = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)

cv2.imshow(im_HSV,"HSV")
cv2.waitKey(0) 
cv2.destroyWindows()
 

Комментарии:

1. второй пример ничего не покажет. в нем отсутствует ан imshow .

2. Да, вы правы, я обновлю его, спасибо!

3. и это неправильный порядок аргументов