import os import numpy as np import dlib from pathlib import Path from PIL import Image import sys imagepaths = Path(sys.argv[1]) print(imagepaths) phase = imagepaths.name print(phase) detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") if not os.path.isdir(phase): os.makedirs(phase) for ip in imagepaths.glob("*.jpg"): img = np.asarray(Image.open(ip)) img.setflags(write=True) dets = detector(img, 1) if len(dets) > 0: shape = predictor(img, dets[0]) points = np.empty([68, 2], dtype=int) for b in range(68): points[b, 0] = shape.part(b).x points[b, 1] = shape.part(b).y save_name = os.path.join(phase, ip.name[:-4] + '.txt') np.savetxt(save_name, points, fmt='%d', delimiter=',') else: print(ip)