我的图片(png)具有透明背景。我需要在图像白色和所有透明黑色上进行所有操作。我找到了这样的解决方案,它可以透明-黑色,但是其他东西是灰色的。
import numpy as np
import cv2
def remove_transparency(source, background_color):
source_img = cv2.cvtColor(source[:,:,:3], cv2.COLOR_BGR2GRAY)
source_mask = source[:,:,3] * (1 / 255.0)
background_mask = 1.0 - source_mask
bg_part = (background_color * (1 / 255.0)) * (background_mask)
source_part = (source_img * (1 / 255.0)) * (source_mask)
return np.uint8(cv2.addWeighted(bg_part, 255.0, source_part, 255.0, 0.0))
img = cv2.imread('my_image_resized.png', -1)
result = remove_transparency(img, 0)
cv2.imshow('', result)
cv2.waitKey()
有人可以帮我吗?我是python新手。
答案 0 :(得分:0)
您需要先阅读unchanged image才能加载Alpha通道。
import cv2
im = cv2.imread("image.png", cv2.IMREAD_UNCHANGED)
然后您may:
alpha_channel = img[:,:,3]
mask = (alpha_channel != 0)
color = img[:,:,:2]
new_img = cv2.bitwise_not(color, color, mask=mask)