python OpenCv IMREAD_UNCHANGED возвращает только три канала - PullRequest
0 голосов
/ 11 сентября 2018

Привет, ребята, я пытаюсь выяснить, что не так с моим кодом

Я хочу загрузить мое изображение, содержащее альфа-канал

описание с официального сайта гласит:

cv.IMREAD_UNCHANGED: если установлено, вернуть загруженное изображение как есть (с альфа-каналом, в противном случае оно обрезается).

Вот моя попытка:

import cv2 as cv 

img2 = cv.imread( 'lbj.jpg' , cv.IMREAD_UNCHANGED)

img2.shape

И результат показывает: (350, 590, 3)

Разве не должно быть (350,590,4)?

Спасибо!

1 Ответ

0 голосов
/ 11 сентября 2018

Причина в том, что каналов всего три, состоит в том, что изображение имеет формат jpg, в котором нет альфа-канала.Если вы должны были загрузить, например, изображение в формате png, которое имело альфа-канал, то

img2 = cv.imread( 'lbj.png' , cv.IMREAD_UNCHANGED)

с 'lbj. png ' загрузило бы изображение с включенным альфа-каналом, итогда

img2.shape

покажет (350, 590, 4).

Если вы преобразуете jpg в png, тогда у вас все равно будет на этом этапе только три канала, потому что изображение будеттолько те каналы BGR, которые были в исходном jpg.Однако в этот момент вы можете добавить альфа-канал, чтобы сделать его BGRA, а затем перейти к работе с параметрами прозрачности.

Ответ на добавление альфа-канала можно получить в python-opencv-add-alpha-канал-RGB-изображение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...