dlib.shape_predictor(args[‘shape_predictor’])
args[‘shape_predictor‘] 位置信息
返回训练好的人脸68特征点检测器
predictor(gray, rect)
gray 输入的8位灰度或RGB图像
rect 开始内部人脸检测的边界框的位置信息
返回68个特征点的位置
import dlib
import cv2
img = cv2.imread("image.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
detector = dlib.get_frontal_face_detector()
dets = detector(gray_img, 1)
# 使用模型构建特征提取器
predictor = dlib.shape_predictor('data/data_dlib/shape_predictor_68_face_landmarks.dat/shape_predictor_68_face_landmarks.dat')
for i, d in enumerate(dets):
# 使用predictor进行人脸关键点检测 shape为返回的结果
shape = predictor(gray_img, d)
for index, pt in enumerate(shape.parts()):
print('Part {}: {}'.format(index, pt))
pt_pos = (pt.x, pt.y)
cv2.circle(img, pt_pos, 1, (255, 0, 0), 2)
#利用cv2.putText标注序号
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, str(index+1),pt_pos,font, 0.3, (0, 0, 255), 1, cv2.LINE_AA)
cv2.imshow('img', img)
k = cv2.waitKey()
cv2.destroyAllWindows()