我最近注意到 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)
将导致单个通道。
添加回答
举报
0/150
提交
取消