[英]matplotlib.pyplot.imshow: removing white space within plots when using attributes “sharex” and “sharey”
[英]How to use matplotlib plots: removing axis, legends and white spaces without imshow?
我一直在嘗試在不使用軸、空格、圖例等的情況下保存我的圖像...而不使用 imshow ,這是因為我不希望圖像出現/嘗試出現在另一個 window 中。 相反,我希望它只保存為 image.png。
這是我迄今為止嘗試過的,但兩者都試圖在另一個我不想要的 window 中顯示圖像。 但它確實成功地保存了沒有軸等的圖像......
viz
這里是我的數據。
viz = display_images(outputs.copy()) #(outputs.copy(), inputs.copy())
我試過了:
fig = plt.figure(frameon=False)
fig.set_size_inches(6.4,4.8)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(viz, aspect='auto')
fig.savefig('image.png')
為了更清楚地說明這一點,我已經包含了display_images
的代碼,盡管可能不需要它來幫助解決最初的問題。
def display_images(outputs, inputs=None, gt=None, is_colormap=True, is_rescale=True):
import matplotlib.pyplot as plt
import skimage
from skimage.transform import resize
plasma = plt.get_cmap('plasma')
shape = (outputs[0].shape[0], outputs[0].shape[1], 3)
all_images = []
for i in range(outputs.shape[0]):
imgs = []
if isinstance(inputs, (list, tuple, np.ndarray)):
x = to_multichannel(inputs[i])
x = resize(x, shape, preserve_range=True, mode='reflect', anti_aliasing=True )
imgs.append(x)
if isinstance(gt, (list, tuple, np.ndarray)):
x = to_multichannel(gt[i])
x = resize(x, shape, preserve_range=True, mode='reflect', anti_aliasing=True )
imgs.append(x)
if is_colormap:
rescaled = outputs[i][:,:,0]
if is_rescale:
rescaled = rescaled - np.min(rescaled)
rescaled = rescaled / np.max(rescaled)
imgs.append(plasma(rescaled)[:,:,:3])
else:
imgs.append(to_multichannel(outputs[i]))
img_set = np.hstack(imgs)
all_images.append(img_set)
all_images = np.stack(all_images)
return skimage.util.montage(all_images, multichannel=True, fill=(0,0,0))
return skimage.util.montage(all_images, multichannel=True, fill=(0,0,0))
總結評論:假設它不一定必須是matplotlib
並且您保存的數組范圍從 0 到 1,您可以執行以下操作:
from PIL import Image
im = Image.fromarray((viz * 255).astype(np.uint8))
im.save('image.png')
在您的問題中添加最后一段代碼后,我可以看到您正在使用scikit-image
,因此您也可以使用它保存您的數組:
skimage.io.imsave('image.png', (viz * 255).astype(np.uint8))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.