根据另一幅图像的像素值设置图像的alpha通道



我有两张图片。在一张图像中,所有非alpha通道像素都等于0,我希望alpha通道的值等于255,而在另一张大小相同的图像中,像素都不是0。在这次尝试中,我试图创建一个基于原始图像的4通道np数组,然后使用np。Argwhere查找像素值非零的位置,然后在新的np数组中,根据该位置设置alpha通道值。

例如,对于输入图像中值为[255,255,255]的每个像素,我希望新图像中对应的像素为[0,0,0,255]。对于输入图像中值为[0,0,0]的每个像素,我希望新图像中对应的像素为[0,0,0,0]。

mask_file = cv.imread(r'PlateMask_0001.png', cv.IMREAD_UNCHANGED)
scale_factor = 0.125
w = int(mask_file.shape[1] * scale_factor)
h = int(mask_file.shape[0] * scale_factor)
scaled = cv.resize(mask_file, (w, h))
coords = np.argwhere(scaled > 0)
new_object = np.zeros((120, 160, 4))
new_object[coords, :] = 255
cv.imshow('Mask', mask)
cv.imshow('Scaled', new_object)
cv.waitKey(0)
cv.destroyAllWindows()

这是我在Stack上的第一个问题,所以请随时建议改进问题格式等。谢谢你。

考虑img1是您的原始图像,img2是需要修改alpha通道的图像。

以下img2的alpha通道在img1(255,255,255)所在的坐标中包含255值:

img2[:,:,3][img1 == (255, 255, 255)]  = 255

值0也是如此:

img2[:,:,3][img1 == (0, 0, 0)]  = 0

最新更新