2017-03-01 22 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

関連する問題