YOLOv8在Jupyter Notebook中show=True导致内核崩溃问题求助
YOLOv8在Jupyter Notebook中图像无法关闭的解决办法
Jupyter Notebook的交互环境和本地IDE(如Spyder)存在差异,YOLOv8默认使用OpenCV的imshow接口弹出图像窗口,这种方式在Notebook中会引发线程阻塞,导致窗口无法正常关闭、程序无响应甚至内核崩溃。以下是几种可行的解决方法:
方法1:改用Matplotlib在单元格内显示结果
避免使用show=True弹出独立窗口,改为获取预测结果后用Matplotlib在Notebook单元格内渲染图像,彻底规避窗口阻塞问题。
修改后的代码:
from ultralytics import YOLO import matplotlib.pyplot as plt # 加载模型 model = YOLO("yolov8n.pt") # 执行预测,不弹出外部窗口 results = model.predict(source="bus.jpg", show=False) # 获取添加了检测框的图像 result_img = results[0].plot() # 转换OpenCV的BGR格式为Matplotlib的RGB格式并显示 plt.imshow(result_img[..., ::-1]) plt.axis('off') # 隐藏坐标轴 plt.show()
方法2:禁用弹出窗口,保存结果到本地
如果不需要实时显示,可直接将检测结果保存到文件,后续在Notebook外部查看:
from ultralytics import YOLO model = YOLO("yolov8n.pt") # 检测结果会自动保存到项目根目录下的runs/detect/predict文件夹 model.predict(source="bus.jpg", show=False, save=True)
方法3:配置OpenCV窗口线程(可选)
在代码开头添加OpenCV线程启动命令,尝试修复窗口阻塞问题,但该方法在部分Jupyter环境中可能无效:
import cv2 cv2.startWindowThread() from ultralytics import YOLO model = YOLO("yolov8n.pt") model.predict(source="bus.jpg", show=True)
内容的提问来源于stack exchange,提问作者Alan Johnstone
相关产品推荐
相关产品推荐

