You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode中Jupyter Notebook运行OpenCV imshow()程序无响应问题

解决VSCode Jupyter Notebook中OpenCV窗口无响应问题

方法一:用Matplotlib替代cv2.imshow显示图像

Jupyter的交互环境和OpenCV独立窗口的事件循环不兼容,改用Matplotlib显示能彻底避免无响应问题,代码如下:

import cv2
from matplotlib import pyplot as plt

cap = cv2.VideoCapture('../data/videos/cat.mp4')
ret, frame = cap.read()

# OpenCV默认读入BGR格式,转成Matplotlib支持的RGB格式
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
plt.imshow(frame_rgb)
plt.axis('off')  # 隐藏多余坐标轴
plt.show()

显示的图像直接嵌入Notebook,关闭操作完全适配Jupyter环境。

方法二:优化cv2窗口的资源释放逻辑

如果一定要用cv2.imshow,通过调整资源释放顺序和事件处理步骤,降低阻塞概率:

import cv2

cap = cv2.VideoCapture('../data/videos/cat.mp4')
ret, frame = cap.read()

cv2.imshow('Hi', frame)
cv2.waitKey(0)  # 等待按键输入
cap.release()  # 先释放视频捕获资源
cv2.destroyWindow('Hi')  # 先销毁指定窗口
cv2.waitKey(1)  # 额外触发一次事件循环,确保窗口正常关闭
cv2.destroyAllWindows()

多添加的waitKey(1)能强制OpenCV处理完窗口关闭事件,避免Jupyter进程卡住。

方法三:使用Jupyter魔法命令嵌入显示

在单元格开头添加%matplotlib inline魔法命令,让图像直接嵌入Notebook,完全规避独立窗口的兼容性问题:

%matplotlib inline
import cv2
from matplotlib import pyplot as plt

cap = cv2.VideoCapture('../data/videos/cat.mp4')
ret, frame = cap.read()
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
plt.imshow(frame_rgb)
plt.axis('off')
plt.show()

内容的提问来源于stack exchange,提问作者RogerKint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:40:30