【计算机视觉】dlib 人脸检测


完整代码一览

import cv2
import dlib

detector = dlib.get_frontal_face_detector()
img = cv2.imread('pyy.png')

faces = detector(img, 0)

for face in faces:
    x1 = face.left()
    y1 = face.top()
    x2 = face.right()
    y2 = face.bottom()
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2)

cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

一、安装 dlib 库

在运行代码之前,你需要安装 dlib。由于 dlib 依赖 C++ 编译环境,安装可能会有点挑战,但你可以使用以下命令尝试:

pip install dlib

如果安装失败,可以下载预编译的 wheel 文件(针对 Python 版本和系统),或者使用 conda 安装:

conda install -c conda-forge dlib

二、逐行代码解释

导入库

import cv2 #用于读取、显示和绘制图像
import dlib #包含机器学习算法的 C++ 库,提供了人脸检测、特征点定位、人脸识别等功能

创建人脸检测器

detector = dlib.get_frontal_face_detector()

dlib.get_frontal_face_detector() 返回一个基于 HOG + 线性 SVM 的人脸检测器对象。该检测器经过大量训练,能检测不同大小、不同角度的人脸(正面和侧面)。

读取图像

img = cv2.imread('pyy.png')

读取名为 pyy.png 的图片

执行人脸检测

faces = detector(img, 0)

detector(img, 0) 对图像进行人脸检测。第二个参数 0 表示不进行图像上采样(upsample),即使用原始尺寸进行检测。如果你想检测更小的人脸,可以增加这个值(如 1 表示上采样一次),但会降低速度。

返回一个矩形列表,每个矩形代表一张人脸的位置。
在这里插入图片描述

绘制矩形框

for face in faces:
    x1 = face.left() #左
    y1 = face.top() #上
    x2 = face.right() #右
    y2 = face.bottom() #下
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2)

遍历每个人脸框,获取左上角坐标 (x1, y1) 和右下角坐标 (x2, y2)。

显示和保存结果

cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

显示标注后的图像,按任意键关闭窗口。
运行结果:
在这里插入图片描述

三、与 OpenCV Haar 级联的对比

特性Haar 级联dlib HOG + SVM
速度非常快稍慢
准确率正面高,侧面差正面和侧面都较好
适用场景实时低功耗应用精度要求较高的应用

通过对比可以看出,dlib 更适合对准确率有较高要求的场景,如果你的应用对实时性要求极高,可以继续使用 Haar,反之则推荐 dlib。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值