当前位置: 首页 > news >正文

OpenCv高阶(十八)——dlib人脸检测与识别

文章目录

  • 一、dlib库是什么?
  • 二、opencv库与dlib库的优缺点对比
    • 1、opencv优缺点
    • 2、dlib库优缺点
  • 三、dlib库的安装
    • 1、在线安装
    • 2、本地安装
  • 四、dlib库的人脸检测器
    • 1. 基于 HOG 的检测器
    • 2. 基于 CNN 的检测器
  • 五、dlib人脸检测的简单使用
    • 1、导入必要库
    • 2、初始化人脸检测器
    • 3、读取图像文件
    • 4、执行人脸检测
    • 5、 遍历检测结果并标注
    • 6、显示检测结果
  • 总结


一、dlib库是什么?

dlib是一个适用于C++和Python的第三方库。包含机器学习、计算机视觉和图像处理的工具包,被广泛的应用于机器人、嵌入式设备、移动电话和大型高性能计算环境。是开源许可用户免费使用。

二、opencv库与dlib库的优缺点对比

1、opencv优缺点

优点
1)可以在CPU上实时工作;
2)简单的架构;
3)可以检测不同比例的人脸。

缺点
1)会出现大量的把非人脸预测为人脸的情况;
2)不适用于非正面人脸图像;
3)不抗遮挡。

2、dlib库优缺点

优点
1)适用于正面和略微非正面的人脸;
2)语法极简单
3)再小的遮挡下仍可工作。
缺点
1)不能检测小脸,因为它训练数据的最小人脸尺寸为80×80,较小尺寸的人脸数据需自己训练检测器;
2)边界框通常排除前额的一部分甚至下巴的一部分;
3)不适用于侧面和极端非正面,如俯视或仰视。

三、dlib库的安装

1、在线安装

pip install dlib –i 镜像地址

在这里插入图片描述
dlib官网:https://dlib.net/compile.html
在这里插入图片描述

2、本地安装

找到dlib库的whl文件进行安装,将whl文件下载到本地安装。
dlib资源: https://github.com/z-mahmud22/Dlib_Windows_Python3.x
在这里插入图片描述

四、dlib库的人脸检测器

dlib 提供 两种主流人脸检测器,适用于不同场景:

1. 基于 HOG 的检测器

detector = dlib.get_frontal_face_detector()  # 默认使用此方法

算法原理:

使用 方向梯度直方图 (HOG) 特征描述图像局部区域的梯度方向分布

结合 线性分类器 (SVM) 进行人脸判别

通过 图像金字塔 和 滑动窗口 实现多尺度检测

特点:

✅ 速度快:适合实时检测(CPU 上可达 30+ FPS)

✅ 轻量级:模型文件小(约 2MB)

⚠️ 局限性:对侧脸、遮挡人脸检测效果较差

2. 基于 CNN 的检测器

cnn_detector = dlib.cnn_face_detection_model_v1("mmod_human_face_detector.dat")

算法原理:

使用 卷积神经网络 (CNN) 进行端到端的人脸检测

需要预训练权重文件(需单独下载)

特点:

✅ 高精度:对侧脸、部分遮挡、复杂背景鲁棒性强

⚠️ 资源消耗大:需要 GPU 加速(CPU 上较慢)

⚠️ 模型文件较大(约 200MB)

在这里插入图片描述

五、dlib人脸检测的简单使用

1、导入必要库

import cv2       # OpenCV库,用于图像处理和显示
import dlib      # 机器学习库,用于人脸特征检测

2、初始化人脸检测器

# 使用dlib内置的基于HOG特征的方向梯度直方图人脸检测器
# 该检测器对正脸检测效果较好,返回人脸矩形坐标
detector = dlib.get_frontal_face_detector()

3、读取图像文件

# 从指定路径加载图像文件,OpenCV默认读取为BGR格式
img = cv2.imread("../data/pd.png")  

4、执行人脸检测

# 参数说明:
# 1. 输入图像(img)
# 2. 图像放大系数(4):通过上采样图像4次来检测更小的人脸
# 返回值:dlib.rectangle对象组成的可迭代对象,包含人脸区域坐标
faces = detector(img, 4)  

5、 遍历检测结果并标注

for face in faces:# 解析人脸矩形坐标:x1 = face.left()   # 人脸框左侧x坐标y1 = face.top()    # 人脸框顶部y坐标x2 = face.right()  # 人脸框右侧x坐标y2 = face.bottom() # 人脸框底部y坐标# 在图像上绘制绿色矩形框标注人脸# 参数说明:# 1. 目标图像# 2. 左上角坐标 (x1, y1)# 3. 右下角坐标 (x2, y2)# 4. 颜色 (BGR格式,此处为绿色)# 5. 线宽(2像素)cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)

6、显示检测结果

cv2.imshow('Face Detection Result', img)  # 创建显示窗口
cv2.waitKey(0)            # 等待任意按键(0表示无限等待)
cv2.destroyAllWindows()   # 关闭所有OpenCV窗口

在这里插入图片描述

总结

Dlib的人脸检测技术通过提供双引擎解决方案,在计算机视觉领域展现了独特的平衡艺术:其HOG检测器以轻量高效的特性(2MB模型、30+ FPS实时性)成为移动端和实时视频的首选,而CNN检测器凭借深度学习带来的高精度(支持多角度、复杂光照),在静态图像分析中树立了行业标杆。这种“鱼与熊掌兼得”的设计哲学,既解决了传统方法对硬件依赖的桎梏(HOG纯CPU运行),又通过模块化架构实现了从基础检测到人脸识别、姿态分析的生态延伸,堪称轻量级框架中兼顾速度与精度的典范。


文章转载自:

http://BYlV00br.tyrLk.cn
http://2mWn0FCw.tyrLk.cn
http://7BG69aWi.tyrLk.cn
http://UL5JYUO5.tyrLk.cn
http://n1LzdN5c.tyrLk.cn
http://v6Yk6T6n.tyrLk.cn
http://L8PCOHeG.tyrLk.cn
http://7yX8TVTU.tyrLk.cn
http://MXh24yyn.tyrLk.cn
http://GZNu0nc0.tyrLk.cn
http://j2Xw8LQI.tyrLk.cn
http://FvMNgJKj.tyrLk.cn
http://zx3hApS4.tyrLk.cn
http://AkkT9Q9a.tyrLk.cn
http://KPLO7WhZ.tyrLk.cn
http://1a9GgQRj.tyrLk.cn
http://m271Qkzn.tyrLk.cn
http://UYagQVV3.tyrLk.cn
http://UKzgGlMR.tyrLk.cn
http://bN1ZlamR.tyrLk.cn
http://jZVBseht.tyrLk.cn
http://PKDSeLz4.tyrLk.cn
http://NXwAOWh6.tyrLk.cn
http://jgZ9RzMX.tyrLk.cn
http://Bqq3MdI3.tyrLk.cn
http://hbdLJH7Y.tyrLk.cn
http://GlaxBGVG.tyrLk.cn
http://AmmEAzc4.tyrLk.cn
http://qaPV7nzb.tyrLk.cn
http://9PwQuWLQ.tyrLk.cn
http://www.dtcms.com/a/216817.html

相关文章:

  • Conda:环境移植及更新1--使用conda-pack
  • WEB安全--RCE--webshell HIDS bypass4
  • 3D Tiles高级样式设置与条件渲染(3)
  • 单向循环链表与双向链表
  • c/c++编译工具在win环境下的配置
  • 外星人入侵-武装飞船
  • delphi xe 12.3下解决错误 ld.exe: unrecognized option ‘--no-rosegment‘
  • C++数据结构 : 哈希表的实现
  • 建筑兔零基础Arduino自学记录100|简易折纸机器人-17
  • Python应用嵌套猜数字小游戏
  • Oracle SHARED POOL的SUB POOL技术
  • Ubuntu 20.04 下 OpenCV 4.5.4 编译安装与系统默认 OpenCV 4.2 共存切换指南【2025最新版!!!】
  • 夏季用电高峰如何防患于未“燃”?电力测温技术守护城市生命线
  • P2014 [CTSC1997] 选课
  • 比亚迪“双剑”电池获中汽中心权威认证,堪称“移动安全堡垒”。
  • 创建vue项目
  • 基于若依的邮件登陆功能
  • 关于 smali:3. Smali 与 APK 结构理解
  • 构建智慧校园门户:技术架构与实践指南
  • 银发团扎堆本地游,“微度假”模式如何盘活银发旅游市场?
  • Autodesk Maya 2025.3新特性
  • halcon高斯滤波
  • AI如何颠覆财务预测?——用Python打造自动化智能分析系统
  • JSONP跨域原理全解析
  • vue2使用el-tree实现两棵树间节点的拖拽复制
  • 计算机网络实验课(三)——直接使用数据构造以太网帧,打包并发送|使用SharpPcap库函数构造以太网帧,并发送出去
  • 【Webtrees 手册】第 8章 - 网站管理员指南
  • 在 Unity 中,Start 方法直接设置 RectTransform 的位置,时出现问题,与预计位置不匹配。
  • LightGBM的python实现及参数优化
  • 从十进制到二进制:深入理解定点数与浮点数表示