python代码实现使用开源的人脸检测库,对采集的图像进行68点人脸检测,并使用haar级联分类器检测人脸角度,并将角度显示在人脸上
时间: 2024-05-06 14:22:13 浏览: 11
以下是一个基于Python的示例代码,使用开源的人脸检测库和haar级联分类器来实现人脸检测和角度检测,并在人脸上显示角度信息:
```python
import cv2
import dlib
# 加载Haar级联分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载人脸关键点检测器
predictor_path = 'shape_predictor_68_face_landmarks.dat'
predictor = dlib.shape_predictor(predictor_path)
# 加载图像
img = cv2.imread('test.jpg')
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用Haar级联分类器检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 对每个检测到的人脸进行关键点检测和角度检测
for (x, y, w, h) in faces:
# 使用dlib库中的人脸检测器检测人脸关键点
rect = dlib.rectangle(x, y, x+w, y+h)
landmarks = predictor(gray, rect)
# 计算人脸角度
angle = dlib.get_face_chip(img, landmarks).angle
# 在人脸上绘制角度信息
cv2.putText(img, "Angle: {:.2f}".format(angle), (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 显示结果图像
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先加载了Haar级联分类器,并使用`detectMultiScale()`函数检测图像中的人脸。然后,我们使用dlib库中的人脸检测器和关键点检测器来检测人脸的68个关键点,并使用`get_face_chip()`函数计算人脸角度。最后,我们在图像中绘制了人脸角度信息,并使用`imshow()`函数显示结果图像。
请注意,在使用此代码之前,您需要下载并安装dlib库和Haar级联分类器,并将其保存在代码所在的目录中。此外,您需要将`test.jpg`替换为您要检测的实际图像。