人脸关键点提取(dlib)

作者使用开发环境Ubuntu16.04+Python3

摘要

人脸关键点识别在机器视觉领域已经发展的相当成熟。比如商汤科技人脸关键点定位
毫秒级别眼、口、鼻轮廓等人脸21、106、240个关键点定位。本文将使用一个人脸识别开源库Dlib进行演示人脸关键点提取。

1.环境搭建

参见《机器视觉开发环境搭建》

安装Dlib库,19.04版本之前,安装该库时需要编译,走过的坑不少。现在安装的话,直接pip安装,默认版本是19.15。切换至我们建立的python环境

workon cv
pip install dlib

2.应用阶段

2.1.人脸关键点提取

关键点提取需要一个特征提取器(predictor),构建特征提取器可以训练模型。当然我们也可以使用官方提供的一个模型‘shape_predictor_68_face_landmarks.dat’,可以去官网也可以在我的网盘里下载: https://pan.baidu.com/s/1dF7z26H 密码: 54i9

如下提供一张dlib提取到的关键点参考图
这里写图片描述

下面可以看一张效果图,作者进行了灰度转换
这里写图片描述

代码实现

# -*- coding:utf-8 -*- 
import cv2
import dlib
import numpy as np 

cap = cv2.VideoCapture(0)
cap.isOpened()

def key_points(img):
    points_keys = []
    PREDICTOR_PATH = "shape_predictor_68_face_landmarks.dat"
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor(PREDICTOR_PATH)
    rects = detector(img,1)

    for i in range(len(rects)):
        landmarks = np.matrix([[p.x,p.y] for p in predictor(img,rects[i]).parts()])
        img = img.copy()
        for idx,point in enumerate(landmarks):
            pos = (point[0,0],point[0,1])
            points_keys.append(pos)
            cv2.circle(img,pos,2,(255,0,0),-1)
    return img

while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    face_key = key_points(gray)
    cv2.imshow('frame',face_key)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

其中points_keys为收集的脸部68个特征关键点坐标

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奥特曼不秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值