1 回答

TA贡献1836条经验 获得超13个赞
首先,如果您只想保存图像,请避免使用plt.savefig
,而是使用其中之一plt.imsave
(或来自其他库的替代方案,例如opencv'simwrite
或来自 的工具PIL
等)。这样做的原因是plt.savefig
实现保存整个图形,这意味着保存轴、标签、文本等。此外,它需要一个布尔参数来Transparent
处理第四个通道。因此,在不知道 的内部工作原理和确切实现的情况下plt.savefig
,可以肯定地说它不应该用于保存灰度图像。
但是,在您的情况下,由于您没有使用plt.savefig
图像本身以外的任何东西来绘制任何东西,因此在涵盖您的问题中的两点之后,我将采用一个简单的解决方法。首先,你的代码是
plt.imshow(data[:, 400:650].T)
但是因为你想要一个灰度图像,你应该设置cmap="gray"
. 二、关于这部分
仅以 png 格式存储单通道图像时,图像全黑
您的问题中没有关于您的值范围的任何信息data
,但我猜这只是“float”与“uint8”数据类型的问题。尝试设置data.astype(float64)
,或者如果使用uint8
,请确保将其标准化[0,255]
而不是[0,1]
。
现在关于简单的解决方法,一旦您弄清楚如何更正上述内容并保存您的图形,您会注意到在加载图像时所有plt.imread
四个通道都具有相同的值(假设您已经设置cmap=gray
),所以你可以只选择四个通道中的任何一个并丢弃其他通道。
但同样,使用plt.imsave
or opencv 是一个更好的主意。
添加回答
举报