使用 dlib 对图像应用仿射变换
Applying Affine transform on an image using dlib
我希望使用 dlib 检测器学习到的 68 个地标来对齐两张人脸图像。我知道我可以将图像转换为 OpenCV Mat,然后使用 warpAffine
方法。我有一定的内存泄漏,并决定看看是否可以只使用 dlib。我注意到 dlib 库在 geometry.h
中有一些用于此目的的方法。
为此,我使用 find_affine_transform
方法获取 point_transform_affine
对象,我在其中找到使用形状和模板获得的 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 );
这可以使用 extract_image_chips function in dlib. There is even an example of its use in the face landmarking example program 对齐面来完成。
我希望使用 dlib 检测器学习到的 68 个地标来对齐两张人脸图像。我知道我可以将图像转换为 OpenCV Mat,然后使用 warpAffine
方法。我有一定的内存泄漏,并决定看看是否可以只使用 dlib。我注意到 dlib 库在 geometry.h
中有一些用于此目的的方法。
为此,我使用 find_affine_transform
方法获取 point_transform_affine
对象,我在其中找到使用形状和模板获得的 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 );
这可以使用 extract_image_chips function in dlib. There is even an example of its use in the face landmarking example program 对齐面来完成。