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

时间:2018-01-17 13:53:03

标签: python opencv python-imaging-library python-imageio

我正在使用三个不同的库

在python中读取图像
  1. 的ImageIO
  2. PIL.Image
  3. CV2。
  4. 我用这些库中的每一个读取图像的输出是不同的。例如

    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')

      type- uint8,size(500,334,3)

    4. 为什么在使用三个不同的库时,我为同一图像获得三种不同的大小?请帮助我理解差异。

1 个答案:

答案 0 :(得分:2)

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

的3个通道

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

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

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

哪个会给你第四个频道

相关问题