目录
1、什么是Dlib库
dlib库是一个包含机器学习算法的C++开源工具包,其中提供了许多实用的功能,包括:
- 面部检测:dlib库可以帮助你创建面部检测软件,以解决实际问题。
- 机器学习算法:dlib库包含了各种机器学习算法,包括数值算法、图形模型推断算法等。
- 图像处理:dlib库还提供了读取和写入常见图像格式的例程,以及各种像素类型之间的自动色彩空间转换、常见的图像操作等功能。
- GUI API:此外,dlib库还提供了线程安全的GUI API,可以帮助你创建图形用户界面。
- 网络支持:dlib库也提供了简单的可移植的Socket API和一个简单的Http服务器。
因此,dlib库是一个功能强大的开源工具包,可以帮助你解决各种实际问题,特别是在机器学习和图像处理领域。
2、Dlib库的安装
详细点击:
python3.7-3.11版本利用whl文件快速安装dlib库(无需安装cmake)
3、代码实现
完整代码:
import cv2
import dlib
cap = cv2.VideoCapture(0)
detector = dlib.get_frontal_face_detector()
while True:
ret, img = cap.read()
if ret is None:
break
faces = detector(img, 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, 255, 0), 2)
cv2.imshow('result', img)
cv2.waitKey(10)
代码解读:
cap = cv2.VideoCapture(0)
:这行代码打开摄像头设备(通常你的电脑只有一个摄像头,所以参数0代表的就是这个摄像头)。detector = dlib.get_frontal_face_detector()
:这行代码初始化了一个面部检测器,这是dlib库的一个功能,可以用来检测图像或视频中正面的人脸。while True:
:这是一个无限循环,使得程序可以持续地从摄像头读取视频流。ret, img = cap.read()
:这行代码读取摄像头的画面,返回两个值:一个布尔值ret(True表示成功读取一帧,False表示已经读取到视频的结尾),以及img(这就是刚刚读取到的图像)。if ret is None: break
:这行代码检查是否成功读取到新的帧。如果没有(即ret为None),则跳出循环。faces = detector(img, 1)
:使用dlib的面部检测器在图像上检测正面的人脸。for face in faces:
:遍历检测到的每一个脸部。x1 = face.left() y1 = face.top()
:获取脸部左上角的坐标。x2 = face.right() y2 = face.bottom()
:获取脸部右下角的坐标。cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
:在图像上画出人脸的矩形框。颜色为绿色((0, 255, 0)代表绿色),线条粗细为2。
运行结果: