为了账号安全,请及时绑定邮箱和手机立即绑定

单通道图像标注

单通道图像标注

慕哥6287543 2023-02-15 17:35:32
我正在研究语义分割问题的掩码(标签)生成我有一个 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
查看完整描述

1 回答

?
开心每一天1111

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.imsaveor opencv 是一个更好的主意。


查看完整回答
反对 回复 2023-02-15
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号