如何还原 openface.AlignDlib.align 所做的转换?

How to revert the transformation done by openface.AlignDlib.align?

我是 openface 的新手。我知道如何使用 openface.AlignDlib.align() 获得对齐的面,但是有没有办法将面转换回其原始形状?

你基本上需要的是逆仿射变换。所以,我们需要得到一个逆变换矩阵,然后应用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)

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