get_face.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/python2
  2. import argparse
  3. import itertools
  4. import os
  5. import time
  6. import cv2
  7. import numpy
  8. import openface
  9. import get_features
  10. start = time.time()
  11. numpy.set_printoptions(precision=2)
  12. align = openface.AlignDlib("shape_predictor_68_face_landmarks.dat")
  13. def get_faces(imgPath):
  14. print("Processing {}.".format(imgPath))
  15. bgr_img = cv2.imread(imgPath)
  16. if bgr_img is None:
  17. raise Exception("Unable to load image: {}".format(imgPath))
  18. rgb_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2RGB)
  19. print(" + Original size: {}".format(rgb_img.shape))
  20. start = time.time()
  21. bb = align.getAllFaceBoundingBoxes(rgb_img)
  22. for iter, img in enumerate(bb):
  23. x1 = abs(img.tl_corner().x)
  24. y1 = abs(img.tl_corner().y)
  25. x2 = abs(img.br_corner().x)
  26. y2 = abs(img.br_corner().y)
  27. print(x1, x2, y1, y2)
  28. crop_img = bgr_img[y1:y2, x1:x2]
  29. cv2.imwrite("face{}.png".format(iter), crop_img)
  30. get_features.get_features(rgb_img, img)
  31. parser = argparse.ArgumentParser()
  32. parser.add_argument('img', type=str, help="Input image.")
  33. args = parser.parse_args()
  34. get_faces(args.img)