人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记

使用shape_to_np函数,我们可以将这个对象转换成一个NumPy数组。

有了这两个辅助函数,我们现在就可以检测图像中的面部标记了。

图像


打开一个新文件,将其命名为facial_landmarks.py,然后插入以下代码:

import the necessary packages

from imutils import face_utils

import numpy as np

import argparse

import imutils

import dlib

import cv2

#构造参数解析器并解析参数

ap = argparse.ArgumentParser()

ap.add_argument(“-p”, “–shape-predictor”, required=True,

help=“path to facial landmark predictor”)

ap.add_argument(“-i”, “–image”, required=True,

help=“path to input image”)

args = vars(ap.parse_args())

导入所需的Python包。

将使用imutils的face_utils子模块访问上面详述的助手函数。

然后将导入dlib。

解析我们的命令行参数:

–shape-predictor:这是通往dlib预先训练的面部标记检测器的路径。你可以在这里下载检测器模型,也可以使用本文的“下载”部分来获取代码+示例图像+预先训练过的检测器。

–image:我们要检测面部标记的输入图像的路径。

既然我们的导入和命令行参数已经处理完毕,让我们初始化dlib的面部检测器和面部标记预测器:

初始化dlib的人脸检测器(基于HOG)然后创建

面部标记预测器

detector = dlib.get_frontal_face_detector()

predictor = dlib.shape_predictor(args[“shape_predictor”])

初始化dlib的预训练人脸检测器,该检测器基于对用于对象检测的定向梯度标准直方图+线性SVM方法的修改。

然后使用提供的shape_predictor的路径加载面部标记预测器。

但是,在我们能够实际检测面部标记点之前,我们首先需要检测输入图像中的面部:

加载输入图像,调整大小,并将其转换为灰度

image = cv2.imread(args[“image”])

image = imutils.resize(image, width=500)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

在灰度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值