matplotlib.pyplot: 保存图像时去除白边并保持相同大小

1 投票
2 回答
2683 浏览
提问于 2025-04-18 13:02

我知道之前有一些人问过这个问题,但他们提供的解决方案对我来说似乎不管用。下面我给出了一些链接,也许对你有帮助。

Matplotlib图表:去掉坐标轴、图例和空白

如何设置matplotlib图形的边距?

正如问题标题所描述的,我使用以下代码来处理这个问题。

plt.imshow(img)
plt.axis('off')
plt.savefig('seg_missi5.png', bbox_inches='tight')
plt.show()

我希望保存的图片没有空白,并且和原始图片的大小一样。

我尝试使用 print img.shape 来查看 img 的大小,它显示 (342, 548, 3),这和原始图片是一样的。但是保存的图片却不是,它的大小是 438 x 675,比原来的大,并且有空白。

2 个回答

1

你可以试试用 pad_inches=0 这个设置。

plt.savefig('seg_missi5.png', bbox_inches='tight', pad_inches=0) 

默认的大小是0.1。你可以从这个链接获取更多信息: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig

2

可以说,matplotlib可能不是实现这个目标的最佳工具(虽然确实可以做到)。我建议使用Python图像库作为替代。使用这个库,你可以像这样保存你的图片:

from PIL import Image

im = Image.fromarray(np.uint8(img))
im.save('outfile.png', "PNG")

撰写回答