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

dlib库的人脸检测案例实现

文章目录

  • 前言
  • 一、dlib 库简介​
    • 1、Dlib库优缺点
      • 1)优点
      • 2)缺点
  • 二、安装 dlib 库​
    • 1、Python 环境安装​
    • 2、C++ 环境安装​
  • 三、案例实现(python)
    • 1、对图片进行人脸识别
    • 2、使用摄像头或对视频检测人脸
  • 总结


前言


一、dlib 库简介​

dlib 是一个包含机器学习算法和工具的跨平台 C++ 库,同时也提供了 Python 接口,方便开发者使用。它涵盖了图像操作、机器学习、数据挖掘等多个领域的功能。在人脸检测方面,dlib 内置了基于 HOG(Histogram of Oriented Gradients,方向梯度直方图)和级联分类器的检测器,以及更为先进的基于深度学习的 CNN(Convolutional Neural Network,卷积神经网络)检测器。这些检测器经过大量数据训练,能够在不同光照、姿态、表情等复杂条件下,准确地检测出人脸,为后续的人脸识别、表情分析等任务奠定了坚实的基础。

1、Dlib库优缺点

1)优点

• 适用于正面和略微非正面的人脸

• 语法极简单

• 再小的遮挡下仍可工作。

2)缺点

• 不能检测小脸,因为它训练数据的最小人脸尺寸为80×80,较小尺寸的人脸数据需自己训练检测器

• 边界框通常排除前额的一部分甚至下巴的一部分

• 不适用于侧面和极端非正面,如俯视或仰视。

二、安装 dlib 库​

在开始使用 dlib 库进行人脸检测之前,我们需要先完成库的安装。以下是在不同环境下的安装方法:​

1、Python 环境安装​

如果你使用的是 Python 环境,推荐使用pip进行安装。在命令行中执行以下命令:​

pip install dlib​


需要注意的是,在某些系统上,直接使用pip install dlib可能会遇到编译问题。此时,可以先安装cmake和boost库,然后再安装dlib。以 Ubuntu 系统为例,安装命令如下:​

sudo apt-get install cmake​
sudo apt-get install libboost-all-dev​
pip install dlib​

2、C++ 环境安装​

对于 C++ 开发者,首先需要从 dlib 的官方 GitHub 仓库下载源代码,地址为:https://github.com/davisking/dlib 。下载完成后,解压文件,进入 dlib 目录,执行以下命令进行编译和安装:​

mkdir build​
cd build​
cmake..​
make​
sudo make install​


完成上述步骤后,dlib 库就成功安装到你的系统中,可以开始使用它进行人脸检测开发了。

三、案例实现(python)

1、对图片进行人脸识别

import cv2
import dlib# 使用HOG算法、线性分类器、金字塔图像结构和滑动窗口检测等技术。
# 比opencv提供的harr级联分类器效果更好
"""生成人脸检测器"""
detector = dlib.get_frontal_face_detector()   # 构造脸部位置检测器HOG
img = cv2.imread("people2.png")# 参数:image:待检测的可能含有人脸的图像。
# 参数n:表示采用上采样的次数。上采样会让图像变大,能够检测到更多人脸对象,提高小人脸的检测效果
# #通常建议将此參数设置为0 或 1。较大的值会增加检测的准确性,但会降低处理速度。
# 返回值faces:返回检测图像中的所有人脸。
faces = detector(img,3)   # 使用构造的脸部位置检测器HOG对图像进行检测,3表示上采样次数
for face in faces:   # 对每个人脸框进行逐个处理# 获取人脸框的坐标x1 = face.left()   # 获取左边像素点的x坐标y1 = face.top()   # 获取上边界y坐标x2 = face.right()   # 右边界x坐标y2 = face.bottom()   # 下边界y坐标# 绘制人脸框cv2.rectangle(img,(x1,y1),(x2,y2),(0,255,0),2)# 是不捕获到的各个人脸框
cv2.imshow("result",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2、使用摄像头或对视频检测人脸

import cv2
import dlibdetector = dlib.get_frontal_face_detector()   # 构造脸部位置检测器HOGcap = cv2.VideoCapture('笑容.mp4')   # 读取视频帧
# cap = cv2.VideoCapture(0)  # 打开摄像头if not cap.isOpened():   # 如果打开失败print("Cannot open camera")exit()  # 终止程序while True:  # 建立死循环,用来不停地读取视频的每一帧画面ret, image = cap.read()  # 读取视频帧,返回读入状态的布尔值和图片,一次读取一帧画面if not ret:  # 读取失败,则退出循环print("不能读取摄像头")breakfaces = detector(image,0)   # 使用脸部位置检测器对每一帧画面进行识别,0表示上采样次数for face in faces:   # 对每个人脸框进行逐个处理x1 = face.left()y1 = face.top()x2 = face.right()y2 = face.bottom()# 绘制人脸框cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)# 展示捕获到的各个人脸框cv2.imshow("result",image)k = cv2.waitKey(20)   # 每一帧画面执行20毫秒if k == 27:   # 如果键盘点击esc键,终止循环break
cv2.destroyAllWindows()   # 关闭所有窗口释放资源

总结

注意事项​:

  • 模型文件路径:在使用 CNN 检测器时,要确保预训练模型文件的路径正确,否则会导致检测器加载失败。​
  • 图像格式要求:不同的检测器对输入图像格式有不同的要求,如 HOG 检测器通常在灰度图像上进行检测,而 CNN 检测器要求输入为 RGB 格式图像,使用时要注意图像格式的转换。​
  • 环境兼容性:dlib 库在不同操作系统和 Python/C++ 版本下可能存在兼容性问题,安装和使用过程中遇到问题可以参考官方文档或社区论坛寻求解决方案。
http://www.xdnf.cn/news/8117.html

相关文章:

  • js中encodeURIComponent函数使用场景
  • MLpack 开源库介绍与使用指南
  • 操作系统学习笔记第1章 操作系统概述(灰灰题库
  • 数据库表索引维护策略
  • 大模型数据标注:驱动人工智能进化的基石
  • 前端学习笔记element-Plus
  • P22:LSTM-火灾温度预测
  • Tomcat优化
  • 《大数据之路:阿里巴巴大数据实践》笔记
  • 让电脑不再卡,从清理系统做起
  • DRIVEVLM: 大视觉语言模型和自动驾驶的融合
  • Ubuntu下误删除分区的补救
  • XMOS推出支持AES67标准的以太网音频解决方案——使高兼容性和低延迟专业音频传输及播放成为可能
  • 机器人坐标系标定
  • App开发中为什么import android.app.Activity;
  • VisionPro_连接相机
  • 戴尔电脑怎么开启vt_戴尔电脑新旧bios开启vt虚拟化图文教程
  • Idea出现 100% classes 等
  • crud方法命名示例
  • wireshark: Display Filter Reference
  • `Release`模式下 编译器优化对 gRPC 远程调用的影响 导致堆栈非法访问
  • 防震基座在半导体晶圆制造设备抛光机详细应用案例-江苏泊苏系统集成有限公司
  • 《黄帝内经》数学建模与形式化表征方式的重构
  • 电脑中了勒索病毒如何自救
  • CyberSecAsia专访CertiK首席安全官:区块链行业亟需“安全优先”开发范式
  • Autodl训练Faster-RCNN网络(自己的数据集)
  • 自由开发者计划 002:创建一个贷款计算器的微信小程序
  • 鸿蒙Flutter实战:22-混合开发详解-2-Har包模式引入
  • VUE 文件下载,流形式的文件下载,判断返回的是流还是JSON;获取下载名称
  • 【Linux笔记】——网络基础