使用opencv进行脸部变形

2vi*_*on2 5 python opencv image-processing computer-vision scikit-image

我可以获得一些关于如何使用opencv在实时视频中变形脸部的想法吗?我尝试过Face替换,但它是使用openFrameworks实现的.

我想用opencv实现相同的功能.opencv中是否还有其他方法可以将Face替换代码从openFrameworks直接移植到Opencv?

我也经历过这个链接,但是很少有人提到过,因为在opencv中不推荐使用face变形

Sat*_*ick 11

我最近写了一篇关于使用OpenCV进行面部变形的文章.我已经用C++/Python共享了代码.你可以在这里找到详细信息

http://www.learnopencv.com/face-morph-using-opencv-cpp-python/

但基本思路如下.

  1. 在两个输入图像中查找点对应关系.
  2. Delaunay对点数进行三角测量.
  3. 变形量由参数α控制.例如.对于alpha = 0,你将在下面的例子中获得Ted Cruz,而对于alpha = 1.你将获得希拉里克林顿.对于任何其他alpha,它将是两者之间的混合.使用alpha通过获取两个输入图像点的加权平均值来计算输出(变形)图像中点的位置.
  4. 计算输入图像中的每个三角形与目标图像(变形图像)之间的仿射变换.
  5. 从每个输入图像到输出图像变形三角形,并根据alpha混合像素.对每个三角形执行此操作,您将获得输出变形图像.

希望这可以帮助.

在此输入图像描述


wbe*_*est 1

我不知道有哪个库专门执行此操作,但您可以自己拼凑一些东西。您需要一组在所有面中引用的公共基准点。然后您需要使用这些点对其进行Delaunay 三角测量。

现在,您可以直接从一个面底盘到另一个面底盘进行转换,也可以将其写入中间标准化面,对其进行更改,然后将其写入任何地方。