0前言当前基于深度学习的人工智能的换脸技术比较多,但实际上,对于一些相同角度、相似肤色换脸场景其实无须通过深度学习模型即可达到比较好的效果 。本文基于OpenCV针对相同脸部角度、相似肤色场景实现完美换脸 。最终效果如下所示(下图为动态图,读者可以仔细
0 前言当前基于深度学习的人工智能的换脸技术比较多,但实际上,对于一些相同角度、相似肤色换脸场景其实无须通过深度学习模型即可达到比较好的效果 。本文基于OpenCV
针对相同脸部角度、相似肤色场景实现完美换脸 。最终效果如下所示(下图为动态图,读者可以仔细观察脸部变化过程):
1 原理原理如下:
2 查找脸部关键点脸部关键点可以通过
- 查找脸部关键点
- 获取关键点凸包,并对凸包点计算
delanauy
三角形 。- 每个对应的
delanauy
三角形做仿射变换- 人脸融合
dlib
库获取:pip install dlib
如果安装失败,可以尝试一下将Python
版本降到3.6
。dlib
可以检测人脸68
个关键点,如下所示:68个关键点
3 delanauy三角形得到
68
个关键点后无法直接贴脸,因为每个人的脸型大小不一致 。为了适配不同大小的脸型,我们将人脸区域划分为多个delanauy
三角形,每个三角形区域单独做仿射变换 。首先获取人脸关键点凸包,即得到处于外围的关键点,直接调用
opencv
函数cv2.convexHull
即可 。得到如下所示:对凸包点计算
delanauy
三角形,每个三角形区域单独仿射变换 。如下所示:仿射变换实现如下:
def apply_affine_transform(src, src_tri, dst_tri, size):
\'\'\' 应用仿射变换
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 菜豌豆炒肉怎么做好吃?
- 波波丁包包子的做法?
- 烤馒头的做法
- 互联网创业有哪些项目做 互联网创业有哪些项目构思
- 韩国辣白菜的做法步骤是什么 怎么做味道最好
- 怎样做猪肉面?
- 五柳菜是怎样做的?
- 香菇鸡汤和海参能不能同时做汤
- 宫爆鸡爆丁的做法王刚?
- 论坛推广的技巧有哪些? 从哪些方面才能做好论坛推广的工作