c++ - 使用 dlib 对图像应用仿射变换

标签 c++ opencv dlib

我希望使用 dlib 检测器学习到的 68 个地标来对齐两张人脸图像。我知道我可以将图像转换为 OpenCV Mat,然后使用 warpAffine 方法。我有一定的内存泄漏,并决定看看是否可以只使用 dlib。我注意到 dlib 库在 geometry.h 中有一些用于此目的的方法。

为此,我使用 find_affine_transform 方法获取 point_transform_affine 对象,我在其中找到使用形状和模板获得的 3 个点之间的仿射变换。在文档中,写到我们可以使用此对象对点 vector 应用变换。但是,我一直无法找到它的一些示例。

  1. 你能告诉我如何应用学到的转换吗?
  2. 其次,我在 array2d 对象中加载了一个图像。有没有办法从 array2d 到点 vector ?

下面列出了 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 来完成dlib 中的函数。在 face landmarking example program 中甚至有一个使用它的例子对齐面孔。

关于c++ - 使用 dlib 对图像应用仿射变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531531/

相关文章:

c++ - 在 C++ 项目中包含 dlib 库时出错

c++ - 模数( float )与分支

c++ - 菜鸟,帮忙做个对象

c++ - 链接静态库时 undefined reference

python-2.7 - 如何在 Ubuntu 16.04 上为 Python 2.7 安装 openCV 2.4.13?

ios - 将 opencv2.framework 链接到 Swift Xcode 项目时出错

python - 如何在 python 中打开和保存视频文件?

c++ - 如何在opencv中获取轮廓中的角

tensorflow - 安装dlib报错找不到cublas_v2

python - 如何训练或合并多个 .svm 并使用 dlib 检测多个类