2016-07-22 4 views
1

dlib 감지기에서 학습 한 68 개의 랜드 마크를 사용하여 두 개의 얼굴 이미지를 정렬하려고합니다. 이미지를 OpenCV Mat으로 변환 한 다음 warpAffine 메서드를 사용할 수 있다는 것을 알고 있습니다. 나는 그것으로 특정 메모리 누수가 있고 dlib만이 가능한지보기로 결정했다. dlib 라이브러리에는이 목적을 위해 geometry.h에 몇 가지 메소드가 있습니다.dlib를 사용하여 이미지에 Affine 변환 적용

이 경우, point_transform_affine 객체를 얻으려는 find_affine_transform 메서드를 사용합니다. 여기서 모양과 템플릿을 사용하여 얻은 3 점 사이에서 아핀 변환을 찾습니다. 문서에서이 객체를 사용하여 점의 벡터에 변형을 적용 할 수 있습니다. 그러나, 나는 그것에 대한 몇 가지 예를 찾을 수 없습니다.

  1. 학습 한 변환을 어떻게 적용 할 수 있는지 말해 줄 수 있습니까?
  2. 둘째, 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); 

답변

관련 문제