7

我正在用三个不同的库在 python 中读取图像

  1. 图像
  2. PIL.图像
  3. 简历2。

我用这些库中的每一个阅读图像时得到的输出都是不同的。例如

  1. 关于使用 imageio 阅读

    a = imageio.imread('test_img.png')

    输出类型为 - uint8,大小为 (500,334,4)

  2. 使用图像

    b = Image.open('test_img.png')

    类型 - 图像,大小 (334,500)

  3. 使用 cv2

    c = cv2.imread('test_img.png')

    类型 - uint8,大小 (500,334,3)

为什么在使用三个不同的库时,同一图像会得到三种不同的尺寸?请帮助我理解差异。

4

1 回答 1

9

从 imageio 和 OpenCV 返回的是图像的三个属性,高度、宽度和通道(或深度)。对于标准 BGR 图像,您只有 3 个通道,这就是为什么您在 OpenCV 中看到 3 个通道

对于 imageio,它很可能正在读取第四个通道,通常是 alpha,它表示图像透明度,通常在 PNG 图像中找到。

如果您想要 OpenCV 的第四个通道,那么您需要使用以下代码:

Mat image = imread("image.png", IMREAD_UNCHANGED);

这会给你第四个频道

于 2018-01-17T15:58:14.507 回答