Jupyter Notebook中Torch与Matplotlib冲突:plt.imshow无法显示求助
解决方案:Torch Hub加载YOLOv5后Matplotlib无法显示图像
以下是几种针对该问题的可行解决办法:
1. 提前锁定Matplotlib后端
在代码最开头明确指定Jupyter兼容的Matplotlib后端,避免YOLOv5加载时修改后端设置:
%matplotlib inline import matplotlib.pyplot as plt import cv2 import torch # 后续加载模型及视频读取代码...
如果需要交互式绘图窗口,可替换为%matplotlib notebook。
2. 加载模型后重置Matplotlib后端
部分YOLOv5版本在加载时会自动设置Matplotlib为无显示后端(如Agg),导致Jupyter无法渲染图像,可在加载模型后重新切换:
torch.hub.load(yolo_path, 'custom', path=onnx_path, source='local') # 重置后端为Jupyter适配的inline模式 plt.switch_backend('module://ipykernel.pylab.backend_inline')
3. 强制刷新绘图并清理资源
在plt.show()后添加清理操作,避免线程阻塞或资源占用:
plt.imshow(frame) plt.axis('off') plt.show() # 关闭当前绘图窗口,释放资源 plt.close()
如果需要实时刷新画面,可替换为:
plt.imshow(frame) plt.axis('off') plt.draw() plt.pause(0.001) # 强制触发画面刷新
4. 确认图像通道格式
虽然cv2可正常显示,但YOLOv5加载后可能间接影响图像处理逻辑,可尝试将cv2默认的BGR格式转换为Matplotlib要求的RGB格式:
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) plt.imshow(frame_rgb) plt.axis('off') plt.show()
内容的提问来源于stack exchange,提问作者Timothee W
相关产品推荐
相关产品推荐

