Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Dlib Facial Landmark Detection

dlib facial landmark detection

dlib (http://dlib.net) is an excellent library for computer vision. with the following code you can detect landmarks in a face:

The red circle in that image marks the tip of the nose, scaled to the width of the nose. The numbers mark the parts that are detected by the dlib detector.

import os
import dlib
import glob
import cv2

predictor_path = "./shape_predictor_68_face_landmarks.dat"
faces_folder_path = "/home/user/opencv/computer-vision-drone/src/python/employees/"

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_path)

for f in glob.glob(os.path.join(faces_folder_path, "*oser*")):
    img = cv2.imread(f)

    dets = detector(img, 1)

    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)))

        for i in range(0, 68):
            x = shape.part(i).x
            y = shape.part(i).y

            img = cv2.putText(img, str(i), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.3, (0, 255, 0), 1)

        nose_x = shape.part(30).x
        nose_y = shape.part(30).y

        radius = int(abs(shape.part(35).x - shape.part(31).x) / 2)
        img = cv2.circle(img, (nose_x, nose_y), radius, (0, 0, 255), 1)

    cv2.imshow("image", img)
    key = cv2.waitKey(0) & 0xff

    if key == 27:
        break


This post first appeared on Computer Vision Drone, please read the originial post: here

Share the post

Dlib Facial Landmark Detection

×

Subscribe to Computer Vision Drone

Get updates delivered right to your inbox!

Thank you for your subscription

×