在 Python 中使用三个不同的库读取图像时的三种不同类型的输出
Three different types of output when reading an image with three different libraries in Python
我正在 python 中使用三个不同的库读取图像
- imageio
- PIL.Image
- cv2.
我在使用这些库中的每一个读取图像时得到的输出是不同的。例如
关于使用 imageio 阅读
a = imageio.imread('test_img.png')
输出类型为 - uint8,大小为 (500,334,4)
使用图片
b = Image.open('test_img.png')
类型 - 图片,尺寸 (334,500)
使用 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);
哪个会给你第四个频道
我正在 python 中使用三个不同的库读取图像
- imageio
- PIL.Image
- cv2.
我在使用这些库中的每一个读取图像时得到的输出是不同的。例如
关于使用 imageio 阅读
a = imageio.imread('test_img.png')
输出类型为 - uint8,大小为 (500,334,4)
使用图片
b = Image.open('test_img.png')
类型 - 图片,尺寸 (334,500)
使用 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);
哪个会给你第四个频道