如何用Pyplot从内存读取图像,避免使用临时文件?
避免临时文件,直接用Matplotlib处理numpy图像
你完全不需要用临时文件中转,matplotlib的imshow()可以直接接收numpy数组作为输入,原代码里的PIL Image转换、存盘、读盘步骤都是多余的,直接简化即可:
修改后的完整代码:
import pickle import matplotlib.pyplot as plt import numpy as np # 加载数据 data = pickle.load(datafile) image = data['img'] label = data['label'] # 创建画布,设置等比例 fig, ax = plt.subplots(1) ax.set_aspect('equal') # 直接传入numpy数组显示图像 ax.imshow(image) # 绘制圆圈 for xx, yy in label: circle = plt.Circle((xx, yy), 10) ax.add_patch(circle) plt.show()
关键细节说明:
- 直接使用从pickle加载的
image(numpy数组)传给ax.imshow(),跳过所有临时文件相关步骤 - 如果你的
image数组存在格式问题,可做简单调整:- 若为单通道灰度图但形状是
(H,W,1),用image = image.squeeze()去掉多余维度 - 若数值范围是0-255但dtype不是
uint8,用image = image.astype(np.uint8)转换格式
- 若为单通道灰度图但形状是
内容的提问来源于stack exchange,提问作者cppsvx
相关产品推荐
相关产品推荐

