Три разных типа вывода при чтении изображения с тремя разными библиотеками в 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')
type - uint8, размер (500,334,3)
Почему я получаю три разных размера для одного изображения при использовании трех разных библиотек? Пожалуйста, помогите мне понять разницу.
1 ответ
То, что вы получаете как от imageio, так и от OpenCV, - это три свойства изображения: высота, ширина и каналы (или глубина). Для стандартных изображений BGR у вас есть только 3 канала, поэтому вы видите 3 для OpenCV
Для imageio вполне вероятно, что он читает четвертый канал, обычно альфа, который представляет прозрачность изображения и часто встречается в изображениях PNG.
Если вам нужен четвертый канал с OpenCV, вам нужно использовать следующий код:
Mat image = imread("image.png", IMREAD_UNCHANGED);
Что даст вам четвертый канал