Esempio n. 1
0
 def __init__(self, haar_file = '../resources/haarcascade_frontalface_default.xml', 
              lbp_file = '../resources/lbpcascade_frontalface.xml', 
              fidu_model_file = '../resources/model_ang_0.txt',
              fidu_exec_dir = '../resources/'):
     '''
     Constructor
     '''
     self.face_finder = CascadeFaceFinder(haar_file = haar_file,
                                         lbp_file = lbp_file)
     
     self.aligner = AffineAligner(fidu_model_file = fidu_model_file)
     self.fidu_exec_dir = fidu_exec_dir
     
     self.valid_angles = [-45,-30,-15,0,15,30,45]
    def testAffineAlign(self):
        aligner = AffineAligner(fidu_model_file='../resources/model_ang_0.txt')

        img_files = [
            './resources/affine_align/Meryl_Streep_0013.jpg',
            './resources/affine_align/Fayssal_Mekdad_0002.jpg'
        ]
        for img_file in img_files:
            img_file = os.path.abspath(img_file)
            detect_landmarks(fname=img_file)

            fidu_file = img_file.replace('.jpg', '.cfidu')
            img = cv2.imread(img_file)
            score, yaw_angle, fidu_points = read_fidu(fidu_file)
            aligned_img, R = aligner.align(img, fidu_points)

            aligned_img_cpy = aligned_img.copy()
            draw_fidu(img, fidu_points)
            fidu_points_in_aligned = unwarp_fidu(orig_fidu_points=fidu_points,
                                                 unwarp_mat=R)
            draw_fidu(aligned_img_cpy,
                      fidu_points_in_aligned,
                      radius=9,
                      color=(255, 0, 0),
                      thickness=3)

            cv2.imshow('padded_face with landmarks', img)
            cv2.imshow(
                'aligned_face',
                cv2.resize(aligned_img, (320, 320),
                           interpolation=cv2.INTER_CUBIC))
            cv2.imshow(
                'aligned_face with landmarks',
                cv2.resize(aligned_img_cpy, (320, 320),
                           interpolation=cv2.INTER_CUBIC))
            cv2.waitKey()