前言:
今天,小编要给大家分享一个让你的Level蹭蹭的往上涨好几档一个技能,用两百行Python代码实现PS的换脸神技,用代码直接碾压以前用PS技术在你面前炫耀的小伙伴。
光说不练假把式,话不多说,请大家仔细看清以下步骤,细细研究,加油。
正文:
这个过程可分为四步:
- 检测面部标记。
- 旋转、缩放和转换第二张图像,使之与第一张图像相适应。
- 调整第二张图像的色彩平衡,使之与第一个相匹配。
- 把第二张图像的特性混合在第一张图像中。
使用图片:

1.使用dlib提取面部标记
该脚本使用dlib的Python绑定来提取面部标记:
该脚本使用dlib的Python绑定来提取面部标记:
用Dlib实现了论文One Millisecond Face Alignment with an Ensemble of Regression Trees中的算法。算法本身非常复杂,但dlib接口使用起来非常简单:
PREDICTOR_PATH = "/home/matt/dlib-18.16/shape_predictor_68_face_landmarks.dat"
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(PREDICTOR_PATH)
def get_landmarks(im):
rects = detector(im, 1)
if len(rects) > 1:
raise TooManyFaces
if len(rects) == 0:
raise NoFaces
return numpy.matrix([[p.x, p.y] for p in predictor(im, rects[0]).parts()])
get_landmarks()函数将一个图像转化成numpy数组,并返回一个68 x2元素矩阵,输入图像的每个特征点对应每行的一个x,y坐标。
特征提取器(predictor)要一个粗糙的边界框作为算法输入,由传统的能返回一个矩形列表的人脸检测