我可以使用opencv获取有关如何在实时视频中变形脸部的一些想法吗?我尝试了Face substitution但是使用openFrameworks实现了它。
我想使用opencv实现相同的功能。 opencv中是否还有其他方法可以将Face替换代码从openFrameworks直接移植到Opencv?
我也经历过这个link,但很少有人提到face morphing is deprecated in opencv?
答案 0 :(得分:8)
我最近写了一篇关于使用OpenCV进行脸部变形的文章。我已经用C ++ / Python共享了代码。你可以在这里找到详细信息
http://www.learnopencv.com/face-morph-using-opencv-cpp-python/
但基本思路如下。
答案 1 :(得分:1)
我不知道任何图书馆专门做这件事,但你可以自己拼凑一些东西。您需要一组在所有面孔中引用的常见fiducial points。然后,您想要使用这些点来对其进行Delaunay triangulation。
现在你可以直接从一个面部机箱转换到另一个面部机架,或者你可以将它写入中间规范化面部,对其进行更改然后将其写入任何地方。
答案 2 :(得分:1)
以下是使用 mesh-warping 算法实现面部变形的步骤(您可以使用opencv
或python scipy
/ scikit-image
来实现):
dlib
检测界标)。scipy.spatial
的{{1}},例如,)。Delaunay
的{{1}},对三角形内的点进行变形并对三角形内的点进行变形,并对变形后的图像进行alpha混合以获得最终变形的图像。 下一个动画显示了使用scikit-image
/ warp()
/ scipy
在python中的 warm-warping 算法实现的动画输出(变形图像序列)从Monalisa图片到Leonardo da Vinci图片开始)。也可以在here中找到。
另一种流行的算法是Beier-neely变形算法(https://en.wikipedia.org/wiki/Beier%E2%80%93Neely_morphing_algorithm)
答案 3 :(得分:0)
使用OpenCV在Python中检查face-morphing tool