dlib検出器で学習した68個のランドマークを使用して2つの顔画像を揃えようとしています。私は画像をOpenCV Matに変換してからwarpAffine
メソッドを使うことができます。私はそれで特定のメモリリークを抱えていて、dlibのみを使用できるかどうかを判断することにしました。私は、dlibライブラリには、この目的のためにいくつかの方法があることに気づいた。geometry.h
dlibを使用して画像にアフィン変換を適用する
この場合、point_transform_affine
オブジェクトを取得するためにfind_affine_transform
メソッドを使用しています。ここで、形状とテンプレートを使用して得られた3点の間でアフィン変換が見つかります。ドキュメントでは、このオブジェクトを使用して点のベクトルに変換を適用できることが書かれています。しかし、私はいくつかの例を見つけることができませんでした。
- どのように変換学習を適用できますか教えてください。
- 次に、array2dオブジェクトにイメージをロードしました。 array2dから点のベクトルに行く方法はありますか?
find_affine_transformの初期コードの一部を以下に示します。
std::vector<dlib::vector<double,2>> TemplateLandmarks;
std::vector<dlib::vector<double,2>> ObtainedLandmarks;
// push_back the specific coordinates in the above vectors
array2d<bgr_pixel> img;
// read the image from a file path using load_image
// learning the best transformation map
point_transform_affine H = find_affine_transform (ObtainedLandmarks , TemplateLandmarks);