def align_and_crop_320x250(image, landmarks): align_size = (250, 320) std_landmarks = [ [ 85.49595008 * 0.9802594866071432, 85.73911040000002 * 1.247223772321429 + 20 * 1.247223772321429 ], # left eye [ 168.39541376 * 0.9802594866071432, 84.30362432000001 * 1.247223772321429 + 20 * 1.247223772321429 ], # right eye [ 127.07756863999998 * 0.9802594866071432, 136.76120383999998 * 1.247223772321429 + 10 * 1.247223772321429 ], # nose tip [ 90.34349120000002 * 0.9802594866071432, 174.31525376000002 * 1.247223772321429 + 10 * 1.247223772321429 ], # left mouth corner [ 166.65585920000004 * 0.9802594866071432, 172.99233343999998 * 1.247223772321429 + 10 * 1.247223772321429 ] ] # right mouth corner landmarks = np.asarray(landmarks).reshape(5, 2) image_cropped = utils.align_and_crop(image, landmarks, std_landmarks, align_size) return image_cropped
def align_and_crop_130x110(image, landmarks): align_size = (110, 130) std_landmarks = [ [37.2946, 60.6963], # left eye [72.5318, 60.5014], # right eye [55.0252, 80.7366], # nose tip [40.5493, 101.3655], # left mouth corner [69.7299, 101.2041] ] # right mouth corner landmarks = np.asarray(landmarks).reshape(5, 2) image_cropped = utils.align_and_crop(image, landmarks, std_landmarks, align_size) return image_cropped
def align_and_crop_112x96(image, landmarks): align_size = (96, 112) std_landmarks = [ [30.2946, 51.6963], # left eye [65.5318, 51.5014], # right eye [48.0252, 71.7366], # nose tip [33.5493, 92.3655], # left mouth corner [62.7299, 92.2041] ] # right mouth corner landmarks = np.asarray(landmarks).reshape(5, 2) image_cropped = utils.align_and_crop(image, landmarks, std_landmarks, align_size) return image_cropped
def align_and_crop_224x224_with_chin(image, landmarks): align_size = (256, 256) crop_size = (224, 224) std_landmarks = [ [85.49595008, 85.73911040000002], # left eye [168.39541376, 84.30362432000001], # right eye [127.07756863999998, 136.76120383999998], # nose tip [90.34349120000002, 174.31525376000002], # left mouth corner [166.65585920000004, 172.99233343999998] ] # right mouth corner landmarks = np.asarray(landmarks).reshape(5, 2) crop_center = (landmarks[2, 0], landmarks[2, 1] * 0.95) image_cropped = utils.align_and_crop(image, landmarks, std_landmarks, align_size, crop_size, crop_center) return image_cropped
def align_and_crop_224x224_with_coord(image, landmarks, tlx, tly): align_size = (256, 256) crop_size = (224, 224) std_landmarks = [ [85.49595008, 85.73911040000002 + 30], # left eye [168.39541376, 84.30362432000001 + 30], # right eye [127.07756863999998, 136.76120383999998 + 30], # nose tip [90.34349120000002, 174.31525376000002 + 30], # left mouth corner [166.65585920000004, 172.99233343999998 + 30] ] # right mouth corner landmarks = np.asarray(landmarks).reshape(5, 2) for i in range(5): landmarks[i][0] = landmarks[i][0] - tlx landmarks[i][1] = landmarks[i][1] - tly crop_center = ((landmarks[0, 0] + landmarks[1, 0]) / 2, (landmarks[0, 1] + landmarks[1, 1]) / 2) image_cropped = utils.align_and_crop(image, landmarks, std_landmarks, align_size, crop_size, crop_center) return image_cropped