使用 mask 图扣取图片中的人像前景
# -*- coding: utf-8 -*-
# @Time : 2022/6/23 17:17
# @Author : lc
# @File : get_fgr.py
# @Software: PyCharm
# @Function: Use mask image to deduct foreground
import os
import cv2
import numpy as np
def get_fgr(img_dir, pha_dir, save_dir):
imglist = os.listdir(img_dir)
for item in imglist:
name = item.split('.', 1)[0]
img_path = img_dir + item
pha_path = pha_dir + item
img = cv2.imread(img_path)
pha = cv2.imread(pha_path, 0)
height, width, channel = img.shape
b, g, r = cv2.split(img)
fgr = np.zeros((4, height, width), dtype=img.dtype)
fgr[0][0:height, 0:width] = b
fgr[1][0:height, 0:width] = g
fgr[2][0:height, 0:width] = r
fgr[3][0:height, 0:width] = pha
cv2.imwrite(save_dir + name + '.png', cv2.merge(fgr))
if __name__ == "__main__":
img_dir = r'./com/green/'
pha_dir = r'./mask/0163/'
save_dir = r'./com/fgr/'
get_fgr(img_dir, pha_dir, save_dir)