Jupyter 显示图像/绘图,但保存空白文件

Jupyter shows an image / plot, but saves a blank file

我正在读取图像并保存它。但是,保存的图像是空白的。我正在 运行 使用以下代码来创建情节

# Create plot
path = i[1][0][0]
img = np.array(Image.open(path))
plt.figure()
fig, ax = plt.subplots(1)
ax.imshow(img)

这就创建了上面的情节。然后我用运行下面的命令来保存这张图片。在保存之前,我想查看图像。但是,它会生成一个空白图像。可能是什么问题 ? 我正在使用 Jupyter notebook,并且有 运行 命令 %matplotlib inline。

# Save generated image with detections
plt.axis("off")
plt.gca().xaxis.set_major_locator(NullLocator())
plt.gca().yaxis.set_major_locator(NullLocator())
filename = os.path.basename(path).split(".")[0]
output_path = os.path.join("output2", filename+".png")
plt.savefig(output_path, bbox_inches="tight", pad_inches=0.0)
plt.show()
plt.close()

这会生成一个空白图像。

  • 与绘图相关的所有代码(例如 axesfigure)必须在同一个单元格中,而不是多个单元格中。
  • 如本 所示,在新单元格中调用图形对象 fig 将显示图像,但这似乎无法使该问题中的代码变为 运行 在第二个单元格中。
  • matplotlib.pyplot.imread and matplotlib.axes.Axes.imshow用于读取和显示图像。
import matplotlib.pyplot as plt
import maptplotlib.ticker as tkr

fig, ax = plt.subplots()

path = 'd:/data/dragon.jpg'
im = plt.imread(path)
ax.imshow(im)

ax.axis("off")
ax.xaxis.set_major_locator(tkr.NullLocator())
ax.yaxis.set_major_locator(tkr.NullLocator())

fig.savefig('d:/data/test.jpg', bbox_inches="tight", pad_inches=0.0)
plt.show()
plt.close()
  • Jupyter Lab 中的代码
  • 图像没有关闭,因为它是内联绘制的(非交互式),但保存正确。
    • 运行 %matplotlib qt 在一个单元格中切换到交互式 - 全局到笔记本
    • 运行 %matplotlib inline 在一个单元格中切换回内联 - 全局到笔记本

  • 用于测试的原始图像