dlib库实现人脸关键点定位

 

目录

1.读取图片

2.创建并使用检测器

3.加载预测器

4.获取并绘制关键点

5.绘制图像


本代码将使用dlib库检测图像中的人脸,并标出人脸上的68个关键点(如眼角、鼻尖等)。

1.读取图片

import numpy as np
import cv2
import dlib

img = cv2.imread("woman.png")

2.创建并使用检测器

detector = dlib.get_frontal_face_detector()
# 创建一个dlib的人脸检测器
faces = detector(img, 0)
# 使用人脸检测器检测img中的所有人脸,并将检测到的人脸矩形框存储在变量faces中
# 参数0表示不进行上采样

3.加载预测器

predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
# 加载一个预先训练好的形状预测器模型,该模型能够预测人脸关键点的位置

4.获取并绘制关键点

for face in faces: #获取每张脸的关键点(实现检测)
    shape = predictor(img, face)  # 获取关键点
    landmarks = np.matrix([[p.x, p.y] for p in shape.parts()])  # 将关键点转换为坐标(x, y)的形式

    # 绘制shape中的每个点
    for idx, point in enumerate(landmarks):  # 枚举
        pos = (point[0, 0], point[0, 1])  # 当前关键的坐标
        cv2.circle(img, pos, 2, color = (0, 255, 0))
        # 在图像img上,以关键点坐标为中心画一个半径为2的圆,颜色为绿色
        font = cv2.FONT_HERSHEY_SIMPLEX  # 字体
        cv2.putText(img, str(idx), pos, font, 0.4, (255, 255, 255), 1, cv2.LINE_AA)
 # 在关键点旁边绘制文本,文本内容是关键点的索引idx,使用白色,大小为0.4倍字体大小

5.绘制图像

cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

  • 16
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值