在 Python 中使用三个不同的库读取图像时的三种不同类型的输出

Three different types of output when reading an image with three different libraries in Python

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

  1. imageio
  2. PIL.Image
  3. cv2.

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

  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)

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

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

中看到 3 个通道的原因

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

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

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

哪个会给你第四个频道