使用Python Opencv解决PPT保存的PNG不透明问题

在使用opencv制作图像透明遮盖(掩膜)的时候,发现使用PPT保存的png图片不是透明的,带有的颜色会遮住背景。
输出图像后发现,ppt保存的png图片中,透明区域的三通道像素为129,129,129,导致不能透明,使用opencv处理:

	img = cv2.imread('test.png')
    #修改ppt保存的图片为透明色
    print(img,img.shape)
    for i in range(img.shape[0]):
        for j in range(img.shape[1]):
            p=img[i][j]
            if p[0] == 129 and p[1]==129 and p[2]==129:
                p[0]=0
                p[1]=0
                p[2]=0
    cv2.imwrite('test_new.png',img)

顺便附上图像叠加的代码,前景透明LOGO:

	img1 = cv2.imread('背景图.jpg')
	img2 = cv2.imread('前景.png')

    rows, cols = img2.shape[:2]
    roi = img1[:rows, :cols]

    # 创建掩膜
    img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
    ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
    mask_inv = cv2.bitwise_not(mask)

    # 保留除前景外的背景
    img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
    dst = cv2.add(img1_bg, img2)  # 进行覆盖
    # 融合后放在原图上
    cv2.imshow('img_add',dst)
    cv2.waitKey()
    cv2.destroyAllWindows()

你可能感兴趣的:(使用Python Opencv解决PPT保存的PNG不透明问题)