本文主要介绍使用cv2实现人脸面部合成。
下面是示例代码:
import numpy as np
import cv2
# 从文本文件中读取点
def readPoints(file):
# 创建数组存储点
points = []
with open(file) as file:
for line in file:
x, y = line.split()
points.append((int(x), int(y)))
return points
# 将使用srcTri和dstTri计算的仿射变换应用于src并返回结果图像。
def applyAffineTransform(src, srcTri, dstTri, size):
# 给定一对三角形,找到仿射变换
warpMat = cv2.getAffineTransform(np.float32(srcTri), np.float32(dstTri))
# 将仿射变换应用于src图片
dst = cv2.warpAffine(src, warpMat, (size[0], size[1]), None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_REFLECT_101)
return dst
# Warp和alpha将img1和img2的三角形区域混合到img中
def morphTriangle(img1, img2, img, t1, t2, t, alpha):
# 找到每个三角形区域的包络矩形
r1 = cv2