face_landmark_point2(opencv标出序号)
import numpy as np
import cv2 #图像处理库OpenCV
import dlib #人脸识别库dlib
#dlib预测器
detector = dlib.get_frontal_face_detector() #使用dlib库提供的人脸提取器
predictor = dlib.shape_predictor(‘shape_predictor_68_face_landmarks.dat’) #构建特征提取器
cv2读取图像
img = cv2.imread(“1.jpg”)
取灰度
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
人脸数rects
rects = detector(img_gray, 1)#
for i in range(len(rects)):
landmarks = np.matrix([[p.x, p.y] for p in predictor(img,rects[i]).parts()]) #人脸关键点识别
for idx, point in enumerate(landmarks): #enumerate函数遍历序列中的元素及它们的下标
# 68点的坐标
pos = (point[0, 0], point[0, 1])
print(idx,pos)
# 利用cv2.circle给每个特征点画一个圈,共68个
cv2.circle(img, pos, 5, color=(0, 255, 0))
# 利用cv2.putText输出1-68
font = cv2.FONT_HERSHEY_SIMPLEX
#各参数依次是:图片,添加的文字,坐标,字体,字体大小,颜色,字体粗细
cv2.putText(img, str(idx+1), pos, font, 0.8, (0, 0, 255), 1,cv2.LINE_AA)
cv2.namedWindow(“img”, 2)
cv2.imshow(“img”, img) #显示图像
cv2.waitKey(0) #等待按键,随后退出