赞
踩
推荐直接安装anaconda 5.2(自带python3.6.8)
安装地址:https://repo.anaconda.com/archive/
安装后,最下角输入anaconda,找到对应shell
安装cmake
https://cmake.org/download/
直接安装即可,完毕后,打开shell,输入cmake -version(我的是3.15)
安装dlib
pip install dlib
注:安装过程中,可能会出现超时的问题,重试即可
安装face_recognition
pip install face_recognition
http://www.jetbrains.com/pycharm/download/#section=windows
源码地址:https://github.com/ageitgey/face_recognition
git clone https://github.com/ageitgey/face_recognition.git
打开pycharm,点击 file-open,选择face_recognition下载目录。
下面我们开始运行demo看看效果。
点击examples/find_faces_in_picture.py,在文件中点右键,选择run xxxx.python
点击examples/identify_and_draw_boxes_on_faces.py,点击右键运行,效果如下:
人脸识别分为三步:
from PIL import Image import face_recognition # Load the jpg file into a numpy array image = face_recognition.load_image_file("biden.jpg") # Find all the faces in the image using the default HOG-based model. # This method is fairly accurate, but not as accurate as the CNN model and not GPU accelerated. # See also: find_faces_in_picture_cnn.py # 人脸定位的核心代码。 face_locations = face_recognition.face_locations(image) print("I found {} face(s) in this photograph.".format(len(face_locations))) for face_location in face_locations: # Print the location of each face in this image top, right, bottom, left = face_location print("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right)) # You can access the actual face itself like this: face_image = image[top:bottom, left:right] pil_image = Image.fromarray(face_image) pil_image.show()
face_locations为所有人脸的位置信息,结构如下:
import face_recognition from PIL import Image, ImageDraw # This is an example of running face recognition on a single image # and drawing a box around each person that was identified. # Load a sample picture and learn how to recognize it. obama_image = face_recognition.load_image_file("obama.jpg") obama_face_encoding = face_recognition.face_encodings(obama_image)[0] # Load a second sample picture and learn how to recognize it. biden_image = face_recognition.load_image_file("biden.jpg") # 这里是人脸编码的核心代码 biden_face_encoding = face_recognition.face_encodings(biden_image)[0] # Create arrays of known face encodings and their names known_face_encodings = [ obama_face_encoding, biden_face_encoding ] known_face_names = [ "Barack Obama", "Joe Biden" ] # Load an image with an unknown face unknown_image = face_recognition.load_image_file("two_people.jpg") # Find all the faces and face encodings in the unknown image face_locations = face_recognition.face_locations(unknown_image) print(face_locations) face_encodings = face_recognition.face_encodings(unknown_image, face_locations) # Convert the image to a PIL-format image so that we can draw on top of it with the Pillow library # See http://pillow.readthedocs.io/ for more about PIL/Pillow pil_image = Image.fromarray(unknown_image) # Create a Pillow ImageDraw Draw instance to draw with draw = ImageDraw.Draw(pil_image) # Loop through each face found in the unknown image for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings): # See if the face is a match for the known face(s) # 这里是人脸距离对比的核心代码 distances = face_recognition.face_distance(known_face_encodings, face_encoding) print(distances) matches = face_recognition.compare_faces(known_face_encodings, face_encoding) print(matches) name = "Unknown" # If a match was found in known_face_encodings, just use the first one. if True in matches: first_match_index = matches.index(True) name = known_face_names[first_match_index] # Draw a box around the face using the Pillow module draw.rectangle(((left, top), (right, bottom)), outline=(0, 0, 255)) # Draw a label with a name below the face text_width, text_height = draw.textsize(name) draw.rectangle(((left, bottom - text_height - 10), (right, bottom)), fill=(0, 0, 255), outline=(0, 0, 255)) draw.text((left + 6, bottom - text_height - 5), name, fill=(255, 255, 255, 255)) # Remove the drawing library from memory as per the Pillow docs del draw # Display the resulting image pil_image.show() # You can also save a copy of the new image to disk if you want by uncommenting this line # pil_image.save("image_with_boxes.jpg")
face_encodings的结构如下:
distances的结构如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。