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

我最近注意到 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]")


料青山看我应如是
浏览 380回答 2
2回答

森栏

有一个默认的第二个参数会cv2.imread()导致 3 通道图像。在单通道源图像的情况下,通过img = cv2.imread(path, cv2.IMREAD_UNCHANGED)或者,在任意图像的情况下,通过img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)将导致单个通道。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python