你应该加载图像IMREAD_UNCHANGED
, i.e.
import cv2 as cv
img = cv.imread("./Green/imgage-000.png", cv.IMREAD_UNCHANGED)
然后,您的图像将有 4 个通道(BGRA
),并且可以使用alpha通道遮罩将相应部分变成白色:
alpha_channel = img[:, :, 3]
_, mask = cv.threshold(alpha_channel, 254, 255, cv.THRESH_BINARY) # binarize mask
color = img[:, :, :3]
new_img = cv.bitwise_not(cv.bitwise_not(color, mask=mask))
我使用透明 PNG 测试了此代码,其中颜色通道为黑色,信息位于透明度中:
嵌套的bitwise_not
很丑陋,但这是我发现让它发挥作用的唯一方法。