使用Python

时间:2018-04-30 18:18:06

标签: python image opencv image-processing python-imaging-library

我需要将此图像(左图)转换为另一个透明背景,保留下面的阴影,就像一个渐变,我知道PNG文件有多层透明,我有另一个图像充当了图像的一部分必须是透明的。

注意:图像看起来不同,因为我手动裁剪它们,但是蒙版文件与图像完全匹配(相同的大小和位置)。

左图像的较亮部分必须完全透明,阴影的较暗部分必须不太透明。

image mask

1 个答案:

答案 0 :(得分:2)

这是一个奇怪的请求。无论如何,这段代码应该做你需要的。这有帮助吗?

import cv2

input_image = cv2.imread('input.png',0)

# Dummy mask to try since I did not have the mask image.
#ret, dummy_mask = cv2.threshold(input_image, 0, 50, cv2.THRESH_BINARY)
#mask = cv2.bitwise_not(dummy_mask)

# Your mask with 0s and 1s
mask = cv2.imread('mask.png',0)
# Retain the masked parts
non_alpha = cv2.bitwise_and(input_image, input_image, mask=mask)

# Get the alpha mask
alpha_mask = cv2.bitwise_not(mask)
alpha_source = cv2.bitwise_and(input_image, input_image, mask=mask)
alpha = cv2.bitwise_not(alpha_source)

#merge them
composite = cv2.merge((non_alpha, non_alpha, non_alpha, alpha));
cv2.imwrite("output.png", composite)