Skip to content

Instantly share code, notes, and snippets.

@ageitgey
Created July 23, 2016 17:27
Show Gist options
  • Save ageitgey/82d0ea0fdb56dc93cb9b716e7ceb364b to your computer and use it in GitHub Desktop.
Save ageitgey/82d0ea0fdb56dc93cb9b716e7ceb364b to your computer and use it in GitHub Desktop.
import sys
import dlib
import cv2
import openface
# You can download the required pre-trained face detection model here:
# http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
predictor_model = "shape_predictor_68_face_landmarks.dat"
# Take the image file name from the command line
file_name = sys.argv[1]
# Create a HOG face detector using the built-in dlib class
face_detector = dlib.get_frontal_face_detector()
face_pose_predictor = dlib.shape_predictor(predictor_model)
face_aligner = openface.AlignDlib(predictor_model)
# Take the image file name from the command line
file_name = sys.argv[1]
# Load the image
image = cv2.imread(file_name)
# Run the HOG face detector on the image data
detected_faces = face_detector(image, 1)
print("Found {} faces in the image file {}".format(len(detected_faces), file_name))
# Loop through each face we found in the image
for i, face_rect in enumerate(detected_faces):
# Detected faces are returned as an object with the coordinates
# of the top, left, right and bottom edges
print("- Face #{} found at Left: {} Top: {} Right: {} Bottom: {}".format(i, face_rect.left(), face_rect.top(), face_rect.right(), face_rect.bottom()))
# Get the the face's pose
pose_landmarks = face_pose_predictor(image, face_rect)
# Use openface to calculate and perform the face alignment
alignedFace = face_aligner.align(534, image, face_rect, landmarkIndices=openface.AlignDlib.OUTER_EYES_AND_NOSE)
# Save the aligned image to a file
cv2.imwrite("aligned_face_{}.jpg".format(i), alignedFace)
Copy link

ghost commented Jan 29, 2018

Hello! does someone know how to install openface on windows ?

Copy link

ghost commented Jan 29, 2018

I've solved the issue

@Lucas31500
Copy link

i have the same error as @nishantkumar1292 : AttributeError: module 'openface' has no attribute 'AlignDlib'
All the steps work fine but when i run the script i got this error.
I am on ubuntu

@shimimachluf
Copy link

shimimachluf commented Mar 15, 2018

I also had the "AttributeError: module 'openface' has no attribute 'AlignDlib'" error.
I installed python 3.4 and made sure all the modules/packages needed for the openface are versions in the required range (requirements.txt), and now it works!

@asthanakarishma
Copy link

I keep getting the following error:

Traceback (most recent call last): File "detect_face_alignment.py", line 15, in <module> detected = frontal_face_detector(img, 1) RuntimeError: Expected writable numpy.ndarray with shape set.

My code matches what is written here. Any ideas as to what I could be doing wrong?

@AbhiAgarwal192
Copy link

Hi @asthanakarishma, looks like you are also doing something else. Can you share your complete code here.

@alex-kravets
Copy link

Hi,
I have a small problem and I have no idea how to solve it in a right way (actually I have, but not sure that it is correct).
Let's suppose that we need to get landmarks from the aligned image. To do that we need:

  1. find a face on the image using face_detector
  2. align image using face_aligner
  3. find face on aligned image using face_detector again
  4. obtain the landmarks with usage face_pose_predictor

And here the problem: face_detector returns empty dlib.rectangles object on aligned image. So, I am not able to use face_pose_predictor because it requires face rectangle which is absent.

My idea is that I can omit step #3 and use face_pose_predictor on aligned image without searching for the face on it. And the bounding box for landmarks detection specify as [[0, 0], [aligned_height, aligned_width]]. But I'm not confident that this is a correct way to deal with the problem.

@York-169
Copy link

There's something I don't understand:
In your article, it says "here’s the code for transforming the image using those landmarks.“.
but from my understanding of the source code. the transforming doesn't use any landmarks at all?
can you explain how?

@saikumardintakurthi
Copy link

Hey where can I find full project
PLEASE give the link

@subhrajitb
Copy link

I want to add to nitish11's comment above on installing openface. His instructions worked for me. I am using Anaconda (though that may not be necessary).

Opened command window from Anaconda.
Installed git using "conda install -c anaconda git".
Then executed nitish11's steps. Did not need to use sudo.

@vamsitharun
Copy link

To install openface, follow the below instructions:

To download the trained model:

  • sh models/get-models.sh

Thank you

@Vickey-ZWQ
Copy link

Vickey-ZWQ commented May 17, 2020

I have installed openface but when I got an error just like below when I run it :

Traceback (most recent call last):
  File "step2.py", line 16, in <module>
    face_aligner = openface.AlignDlib(predictor_model)
AttributeError: module 'openface' has no attribute 'AlignDlib'

note: the step2.py is the script. My system: ubuntu 20.04
how I supose do?

@TigerKim9
Copy link

The problem that I'm experiencing is different:

     24 # Run the HOG face detector on the image data
---> 25 detected_faces = face_detector(image, 1)
     26 
     27 print("Found {} faces in the image file {}".format(len(detected_faces), file_name))

RuntimeError: Unsupported image type, must be 8bit gray or RGB image.

I've tried all that is suggested in ageitgey/face_recognition#21 ,but couldn't fix it. Please help! Thank you!

hi get try
image.astype('uint8')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment