我是OpenCV新手,需要在透明图像上放置白色背景来进行操作
我的透明图像是全黑的,就像下面的例子:black "rectangle"
为了能够放置白色背景,我使用numpy创建了一个写入图像,与透明图像的尺寸相同:
img1 = cv.imread("rectangle.png", cv.IMREAD_ANYCOLOR)
arrayImg1 = np.asarray(img1)
rows, columns = arrayImg1.shape[:2]
print(f'Columns: {columns}')
print(f'Lines: {lines}')
writeImg = np.ones((rows, columns, 3)) * 255
但是当我合并图像时,黑色部分不会出现在白色部分之上
我尝试使用“cv2.add()”方法来连接图像,但这并没有解决我的问题,而且我不知道还有其他方法可以做到这一点
1条答案
按热度按时间jogvjijk1#
OpenCV图像已经是Numpy数组了。所以你不需要使用asarray来转换。把alpha通道和BGR通道从img1中分离出来。然后使用alpha通道作为Numpy的遮罩来改变alpha通道的颜色。
原来你的图像是单通道的阿尔法而不是3通道的阿尔法。所以在年底分配的颜色应该只是255而不是(255,255,255)。见打印结果的终端从上面。