使用opencv进行人脸识别的三种方法(opencv人脸识别系统python毕业设计),本文通过数据整理汇集了使用opencv进行人脸识别的三种方法(opencv人脸识别系统python毕业设计)相关信息,下面一起看看。

  目前人工智能中有很多基于深度学习的换脸技术,但实际上一些角度相同、肤色相近的换脸场景,不需要深度学习模型也能达到更好的效果。基于OpenCV,实现了相同人脸角度和相似肤色场景下的完美换脸。最终效果如下(下图为动态图,读者可要小心了。

  目前人工智能中有很多基于深度学习的换脸技术,但实际上一些角度相同、肤色相近的换脸场景,不需要深度学习模型也能达到更好的效果。基于OpenCV,实现了相同人脸角度和相似肤色场景下的完美换脸。最终效果如下(下图为动态图,读者可以仔细观察面部变化的过程):

   1原则原则如下:

  找到人脸的关键点以获得关键点的凸包,并为凸包点计算delanauy三角形。每个对应的delanauy三角形执行仿射变换和面部融合。2找到脸部的关键点。人脸的关键点可以通过dlib库获得:

  安装pipdlib如果安装失败,可以尝试将Python版本降到3.6。

   Dlib可以检测人脸的68个关键点,如下:

   68个要点

   3德拉诺三角形在得到68个关键点后不能直接贴在脸上,因为每个人的脸型大小不一样。为了适应不同的人脸形状,我们将人脸区域划分为若干个delanauy三角形,每个三角形区域分别进行仿射变换。

  先获取人脸关键点的凸包,即获取外围的关键点,直接调用opencv函数cv2.convexHull。结果如下:

  对凸包点计算德劳三角形,对每个三角形区域分别进行仿射变换。如下所示:

  仿射变换实现如下:

   def apply_affine_transform(src,src_tri,dst_tri,size): \\\ Apply仿射变换src:输入图像src_tri:输入图像中的三个点dst_tri:输入图像中的三个点对应输出图像中的三个点size:输出图像size return:根据两个三角形的对应点返回输入图像仿射变换得到的图像\ \ \ #获取仿射矩阵warp _ mat=cv2 . getaffinettransform(NP . float 32(src _ tri), np.float32(dst_tri)) #将刚刚找到的仿射变换应用到src图像dst=cv2.warpAffine(src,warp_mat,(size[0],size[1]),None,Flags=cv2.inter _ linear,border mode=cv2 . border _ reflect _ 101)返回dst长度原因,其他实现代码不在此贴。 如果需要代码,直接拉到文末,免费获取源代码。

   4人脸融合人脸融合采用泊松融合比较合适:

   .cv2.seamlessClone(dst,to_img,p_mask,center,cv2。正常_克隆).

  更多使用opencv进行人脸识别的三种方法(opencv人脸识别系统python毕业设计)相关信息请关注本站,本文仅仅做为展示!