2014-06-12 86 views
1

我可以通過opencv獲得有關如何在實時視頻中變形臉部的一些想法嗎?我試過Face substitution,但是它使用openFrameworks實施。使用opencv進行臉部變形

我想實現使用opencv相同。在opencv中是否有其他方法可用,而不是將OpenFrame的Face替代代碼直接移植到Opencv中?

我也經歷過這個link,但是很少有人提到過face morphing is deprecated in opencv

+0

圖像變形(你的博客鏈接)是從現場視頻變形完全不同的 - 和OpenCV決不會做什麼都做了openFrameworks,這就是爲什麼你的GitHub項目同時使用 – Gabor

+0

也許你可以使用calcOpticalFlowFarneback。看到這個youtube鏈接:https://www.youtube.com/watch?v=F4k9q-HXT7Y另外,請參閱opencv密集光流教程(頁面底部):http://docs.opencv.org/trunk/ DOC/py_tutorials/py_video/py_lucas_kanade/py_lucas_kanade.html。 – user391339

回答

0

我不知道任何具體做這件事的圖書館,但你可以自己拼湊一些東西。你需要一套共同的fiducial points,你在所有的面孔參考。然後你想用這些點來做Delaunay triangulation就可以了。

現在,您可以直接從一個臉部底盤進行變換,也可以將其寫入中間標準化臉部,對其進行更改,然後將其寫入任何位置。

6

我最近寫了一篇關於使用OpenCV進行臉部變形的文章。我已經在C++/Python中分享了代碼。你可以在這裏找到細節

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

但其基本思路如下。

  1. 查找兩個輸入圖像中的點對應關係。
  2. 對點進行Delaunay三角測量。
  3. 變形量由參數α控制。例如,對於alpha = 0,你會在下面的例子中得到Ted Cruz,對於alpha = 1,你將得到希拉裏克林頓。對於任何其他阿爾法,這將是兩者之間的融合。使用alpha通過對兩個輸入圖像點進行加權平均來計算輸出(變形)圖像中點的位置。
  4. 計算輸入圖像和目標圖像(變形圖像)中每個三角形之間的仿射變換。
  5. 從每個輸入圖像變換爲輸出圖像的三角形,並基於alpha混合像素。針對每個三角形執行此操作,並獲得輸出變形圖像。

希望這有助於。

enter image description here