Menu

Extracting the eyes after landmark

Help
2017-01-09
2017-01-09
  • Tiago Xavier Ferreira da Silva

    Hello, so I've been playing around with the dlib shape predictor a bit and I wanted to take it further, I want to extract the images of the eyes (separatly) so after I can run them on another classifier to see if they are open or closed.
    I tried several things but I cant extract the eyes images, does some1 know how to do it?

    import sys
    import os
    import dlib
    import glob
    from skimage import io
    
    if len(sys.argv) != 3:
        print(
            "Give the path to the trained shape predictor model as the first "
            "argument and then the directory containing the facial images.\n"
            "For example, if you are in the python_examples folder then "
            "execute this program by running:\n"
            "    ./face_landmark_detection.py shape_predictor_68_face_landmarks.dat ../examples/faces\n"
            "You can download a trained facial shape predictor from:\n"
            "    http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2")
        exit()
    
    predictor_path = sys.argv[1]
    faces_folder_path = sys.argv[2]
    
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor(predictor_path)
    win = dlib.image_window()
    
    for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
        print("Processing file: {}".format(f))
        img = io.imread(f)
    
        win.clear_overlay()
        win.set_image(img)
    
        # Ask the detector to find the bounding boxes of each face. The 1 in the
        # second argument indicates that we should upsample the image 1 time. This
        # will make everything bigger and allow us to detect more faces.
        dets = detector(img, 1)
        print("Number of faces detected: {}".format(len(dets)))
        for k, d in enumerate(dets):
            print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
                k, d.left(), d.top(), d.right(), d.bottom()))
            # Get the landmarks/parts for the face in box d.
            shape = predictor(img, d)
            print("Part 0: {}, Part 1: {} ...".format(shape.part(0),
                                                      shape.part(1)))
            # Draw the face landmarks on the screen.
            win.add_overlay(shape)
    
        win.add_overlay(dets)
        dlib.hit_enter_to_continue()
    

    Thank you

     
  • Francisco Leite

    Francisco Leite - 2017-04-12

    Hi,

    Have a look in the attached image, it will show you which points belong to the eyes.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.