2017-03-01 37 views
0

我是openface的新用户。我知道如何使用openface.AlignDlib.align()获得一个对齐的人脸,但无论如何将脸部转换回其原始形状?如何恢复由openface.AlignDlib.align完成的转换?

+0

它与保存'rgbImg'到'.align()'不同吗? – Marat

+0

只是好奇,你的问题与opencv有什么关系? –

+0

@Marat:假设我对对齐的图像进行了一些修改,并且当我回到原始的rbgImg时,我想保留该修改。 – windancer

回答

1

你基本上需要的是一个逆仿射变换。所以,我们需要得到一个逆变换矩阵,然后应用warpAffine。这里是一块align()code

npLandmarkIndices = np.array(landmarkIndices) 
H = cv2.getAffineTransform(npLandmarks[npLandmarkIndices], 
           imgDim * MINMAX_TEMPLATE[npLandmarkIndices]) 
thumbnail = cv2.warpAffine(rgbImg, H, (imgDim, imgDim)) 

H不存储,所以我们需要学习的变换矩阵:

H_reverse = cv2.getAffineTransform(
    imgDim * MINMAX_TEMPLATE[npLandmarkIndices], 
    npLandmarks[npLandmarkIndices]) 
inverse_projection = cv2.warpAffine(thumbnail, H_reverse, rgbImg.shape) 

我没有检查代码是否实际工作,但我希望你可以得到方向

+0

这很有道理,感谢您的帮助! – windancer