为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口

Posted

技术标签:

【中文标题】为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口【英文标题】:Why did I get No Responding window when calling cv2.imshow() in Jupyter notebook为什么在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口 【发布时间】:2021-10-11 19:25:58 【问题描述】:

每当我在 Jupyter notebook 中运行以下代码时,都会弹出一个窗口并变为无响应。我所做的是将图像转换为 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】:

你有两种方法可以解决这个问题,

A) 使用 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()

另一种方法是 B) 使用opencv的waitkey函数


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()

【讨论】:

第二个例子什么也不显示。它缺少imshow 是的,你是对的,会更新它,谢谢! aaand 那是错误的参数顺序

以上是关于为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口的主要内容,如果未能解决你的问题,请参考以下文章

用Jupyter Notebook画图为啥不显示图像直接到笔记本的out中

用Jupyter Notebook画图为啥不显示图像直接到笔记本的out中

为啥当 Jupyter 笔记本处于活动状态时我无法访问我的 localhost:8888 地址?

TypeError:'numpy.ndarray'对象不可调用,无法显示窗口

如何在 Jupyter 笔记本中调用 BigQuery 函数

为啥 Jupyter notebook 不从 VBA 运行?