如何恢复openface.AlignDlib.align完成的转换?

时间:2017-03-01 01:34:14

标签: python opencv face-recognition

我是openface的新手。我知道如何使用openface.AlignDlib.align()得到一个对齐的面,但无论如何都要将面转换回原来的形状?

1 个答案:

答案 0 :(得分: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)

我没有检查代码是否真的有效,但我希望你能得到方向