现如今人脸识别的技术已经十分先进了,识别率很高,dlib也是人脸识别常用的一个库,可以检测出人脸上的68个点,并且进行标注,当我们准备自己的人脸数据时,常常用dlib进行数据提取。
首先需要在python中安装dlib
pip install dlib==19.6.1
如果提示无法编译的错误,则需要在python环境中安装cmake,之后再安装dlib就能够成功
dlib人脸检测使用分为两种,一种是对人脸检测后提取整个人脸区域,一种是在人脸上标注特征点
人脸区域
import cv2
import numpy as np
import time
import os
from matplotlib import pyplot as plt
import dlib
detector = dlib.get_frontal_face_detector()
img = cv2.imread('E:\\private\\deeplearning\\dlib\\timg.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
faces = detector(img_gray, 1)
for index, face in enumerate(faces):
left = face.left()
top = face.top()
right = face.right()
bottom = face.bottom()
cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0))
cv2.imwrite('E:\\private\\deeplearning\\dlib\\timg1.jpg', img)
女神镇楼
import cv2
import numpy as np
import time
import os
from matplotlib import pyplot as plt
import dlib
detector = dlib.get_frontal_face_detector()
img = cv2.imread('E:\\private\\deeplearning\\dlib\\timg.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
faces = detector(img_gray, 1)
for face in faces:
shape = predictor(img, face) # 寻找人脸的68个标定点
# 遍历所有点,打印出其坐标,并圈出来
for pt in shape.parts():
pt_pos = (pt.x, pt.y)
cv2.circle(img, pt_pos, 2, (0, 255, 0), 2)
cv2.imwrite('E:\\private\\deeplearning\\dlib\\timg1.jpg', img)