您当前的位置:首页 > 计算机 > 编程开发 > Python

python --将绿幕图片抠成透明背景图片

时间:08-15来源:作者:点击数:

该代码段展示了如何利用OpenCV库将含有绿幕的图片转换成具有透明背景的PNG图片。通过色彩空间转换(HSV),定义绿色范围,创建掩码,然后进行按位运算来分离和提取绿幕部分,最终保存为带Alpha通道的图像。

def get_none_img(img):
    """
    将绿幕图片抠成透明背景图片
    :return:
    """
    # todo 读取并转换图片格式
    _, ext = os.path.splitext(img)
    opencv = cv2.imread(os.path.join(IMAGES_ABS_PATH, img))
    hsv = cv2.cvtColor(opencv, cv2.COLOR_RGB2HSV)

    # todo 指定绿色范围,60表示绿色,我取的范围是-+10
    minGreen = np.array([30, 70, 70])
    maxGreen = np.array([80, 255, 255])

    # todo 确定绿色范围
    mask = cv2.inRange(hsv, minGreen, maxGreen)

    # todo 确定非绿色范围
    mask_not = cv2.bitwise_not(mask)

    # todo 通过掩码控制的按位与运算锁定绿色区域
    green = cv2.bitwise_and(opencv, opencv, mask=mask)

    # todo 通过掩码控制的按位与运算锁定非绿色区域
    green_not = cv2.bitwise_and(opencv, opencv, mask=mask_not)

    # todo 拆分为3通道
    b, g, r = cv2.split(green_not)

    # todo 合成四通道
    bgra = cv2.merge([b, g, r, mask_not])

    # todo 保存带有透明通道的png图片,有了这种素材之后,就可以给这张图片替换任意背景了
    cv2.imwrite(f'./caches/image1/{_}.png', bgra)
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐