#python #image #opencv #image-processing #computer-vision
#python #изображение #opencv #обработка изображений #компьютерное зрение
Вопрос:
Как я могу добавить альфа-канал к изображению png? Точно, у меня есть фон с помощью функции grabcut, теперь я хочу добавить его к изображению png.
После этого я хочу сделать альфа-канал прозрачным с помощью маски
img[np.all(img == [0, 0, 0, 255], axis=2)] = [0, 0, 0, 0]
Комментарии:
1. cv2.cvtColor(…, RGB2RGBA) для добавления канала (и заполнения его позже) или использования функций разделения и слияния
Ответ №1:
Вот подход к заполнению канала.
import cv2
# path to your own images
rgb = cv2.imread('images/5v63T_RGB.png')
alpha = cv2.imread('images/5v63T_Alpha.png')
rgba = cv2.cvtColor(rgb, cv2.COLOR_RGB2RGBA)
one_channel_alpha = cv2.cvtColor(alpha, cv2.COLOR_RGB2GRAY)
# fill alpha channel with image (needs to be same size)
rgba[:, :, 3] = one_channel_alpha
cv2.imshow("rgb", rgb)
cv2.imshow("alpha", one_channel_alpha)
cv2.imshow("rgba", rgba)
# you can't visualize alpha channel as transparency.
# the 32 bits PNG image, so let's save and use other view.
cv2.imwrite("images/result_rgba.png", rgba)
cv2.waitKey(0)
cv2.destroyAllWindows()
Вы получаете такие результаты:
Удачи.