用DLib库进行人脸关键点检测与提取

首先需要安装依赖
pip install dlib
此方法是需要在你安装cmake、Boost环境的计算机使用
pip install Cmake
1、使用pip install Cmake安装Cmake库
2、使用pip install boost安装boost库
(不行加上)3.https://visualstudio.microsoft.com/zh-hans/downloads/
安装VS2019
或者
conda install -c conda-forge dlib

1.人脸检测
import sys
import dlib
from skimage import io

detector = dlib.get_frontal_face_detector()
window = dlib.image_window()
img = io.imread(“1.jpg”)

dets = detector(img, 1)
print(“Number of faces detected: {}”.format(len(dets)))
for i, d in enumerate(dets):
print(“Detection {}: Left: {} Top: {} Right: {} Bottom: {}”.format(i, d.left(), d.top(), d.right(), d.bottom()))

window.clear_overlay()
window.set_image(img)
window.add_overlay(dets)
dlib.hit_enter_to_continue()

在这里插入图片描述

2.人脸关键点提取
import dlib
import numpy
from skimage import io
import cv2

predictor_path = “…/data/shape_predictor_68_face_landmarks.dat”
faces_path = “1.jpg”

‘’‘加载人脸检测器、加载官方提供的模型构建特征提取器’’’
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_path)

win = dlib.image_window()
img = io.imread(faces_path)

win.clear_overlay()
win.set_image(img)

扫描二维码关注公众号,回复: 13157420 查看本文章

dets = detector(img, 1)
print(“Number of faces detected: {}”.format(len(dets)))

for k, d in enumerate(dets):
shape = predictor(img, d)
landmark = numpy.matrix([[p.x, p.y] for p in shape.parts()])
print(“face_landmark:”)
print (landmark) # 打印关键点矩阵
win.add_overlay(shape) #绘制特征点
for idx, point in enumerate(landmark):
pos = (point[0, 0], point[0, 1])
cv2.putText(img, str(idx), pos, fontFace=cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
fontScale=0.3, color=(0, 255, 0))
# cv2.circle(img, pos, 3, color=(0, 255, 0))
win.set_image(img)

dlib.hit_enter_to_continue()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_16792139/article/details/120290238