我一直在试图保存我的图像没有轴,空白,图例等不使用imshow,这是因为我不希望图像/尝试显示在另一个窗口中。相反,我希望它只保存为image.png
这是我到目前为止尝试过的,但两者都试图在另一个窗口中显示我不想要的图像。但它确实成功地保存了无轴图像等
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的数组,则可以执行以下操作:在您添加问题中的最后一段代码后,我可以看到您正在使用
scikit-image
,因此您也可以使用它保存数组:相关问题 更多 >
编程相关推荐