龙空技术网

人脸合成与交换——三角剖分实现OpenCV人脸识别

不凡的Python编程 209

前言:

此刻看官们对“opencv分割图片”大约比较关注,看官们都想要了解一些“opencv分割图片”的相关文章。那么小编同时在网络上网罗了一些关于“opencv分割图片””的相关内容,希望兄弟们能喜欢,咱们快快来了解一下吧!

一:三角剖分概念(Triangulation)

三角剖分最早是俄国数学家Delaunay提出来的,而他获得博士学位时候的老师是Georgy Voronoy,是维诺图概念的提出者,而且维诺是马尔可夫的学生,就是很难懂的马尔可夫链的鼻祖。所以三角剖分又常常被冠以Delaunay Triangulation。其基本思想就是对任意多的点,分割为多个三角形,任意一个三角形的外接圆都不应该包含其它顶点,如果包含则继续寻找组合,直到所有点满足此条件,最终得到的多个三角形就是三角剖分,三角剖分在人脸特征迁移、人脸合成与交换、图像合成与分割等方面应用广泛,最常见的就是通过三角剖分实现合成显示如下:

二:OpenCV中相关API支持

Subdiv2D对象是OpenCV中用来生成三角剖分,并且获取三角剖分全部三角形的工具类,主要方法如下:

三:OpenCV基于人脸的三角剖分实现

现在很多人脸识别演示场景都支持实时绘制人脸的三角部分之后的全部三角形,感觉是非常的帅,特别是大屏投影显示,笔者就在一些人工智能的展会上看到大厂的这种展示。利用OpenCV的HAAR级联检测器实现人脸检测,然后基于人脸检测结果通过LBF人脸Landmark检测器实现人脸68个特征点的拟合,然后根据拟合的68个点调用Subdiv2D类的相关API就可以生成人脸三角剖分,最后绘制即可。相关步骤代码如下:

1.人脸检测

2.Landmark特征点提取

3.三角剖分生成与绘制

输入原图

人脸检测结果

三角部分绘制

标签: #opencv分割图片