单通道图像标注

我正在研究语义分割问题的掩码(标签)生成


我有一个 NumPy 数组250x321。这是一个单通道图像。我必须注释这张图片。但由于这是单通道图像,当尝试以 的正常模式保存它时matplotlib.pyplot,尺寸会随着通道的变化而改变 (4)。当只存储单通道图像png格式时,图像全黑,因此无法对图像进行标注。


所以我无法注释png格式图像(全黑),也无法使用正常的matplotlib.pyplot保存功能(Dim 随通道一起更改)


有人可以建议我如何完成这项工作!


我使用了下面给出的代码


plt.imshow(data[:, 400:650].T)

plt.tight_layout()

plt.xticks([])

plt.yticks([])

plt.axis('off')

plt.savefig('/content/new.png',bbox_inches='tight', pad_inches=0.0)

上面的代码在原始数组的形状为 shape 时245x315x4生成shape数组。plt.imread250x321x1


慕哥6287543
浏览 168回答 1
1回答

开心每一天1111

首先,如果您只想保存图像,请避免使用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.imsaveor opencv 是一个更好的主意。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python