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

为什么 cv2.imread 改变像素值?

为什么 cv2.imread 改变像素值?

料青山看我应如是 2021-09-14 10:24:29
我最近注意到 cv2.imread 改变了图像的像素值。我正在做分割,因此像素值很重要,因为不同的像素值显示不同的标签。我正在使用下面的代码,这里我的输入图像是蒙版的黑白图像(像素值只有 0 和 1,因为我在 matlab 中读取它们以确保。)但是当我打印 original_mask 的像素值时,我看到像素值已更改并涵盖许多不同的值。任何帮助是极大的赞赏。此外,当我打印 original_image.shape 时,我看到图像是 RGB,这意味着有 3 个通道(k、k、3)而不是 1 个通道!!!!        original_mask = cv2.imread(mask_dir + '/'+lists.iloc[i, 0] + '.png')        print(original_mask, "original_masklllll")        print(original_mask.shape, "original_mask")        resized_mask = cv2.resize(original_mask, (256, 256))        print(resized_mask.shape, "resized_mask")        print(resized_mask, "resized_mask")        print(resized_mask[:, :, 0], "resized_mask[:, :, 0]")
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

有一个默认的第二个参数会cv2.imread()导致 3 通道图像。在单通道源图像的情况下,通过

img = cv2.imread(path, cv2.IMREAD_UNCHANGED)

或者,在任意图像的情况下,通过

img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)

将导致单个通道。


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 379 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信