【问题标题】:Need to do transparent black other white需要做透明黑色其他白色
【发布时间】:2019-01-16 07:36:32
【问题描述】:

我有一个透明背景的图片 (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新手。

【问题讨论】:

标签: python python-3.x python-2.7


【解决方案1】:

你需要先阅读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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2020-11-29
    • 2015-04-25
    • 2015-07-11
    • 2015-09-05
    相关资源
    最近更新 更多