opencv实现人脸笑容识别的代码
时间: 2023-08-16 19:10:20 浏览: 63
下面是使用OpenCV实现人脸笑容识别的代码:
```python
import cv2
# 加载人脸和笑容分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取每一帧图像
ret, frame = cap.read()
# 转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 对每张人脸进行笑容检测
for (x, y, w, h) in faces:
roi_gray = gray[y:y+h, x:x+w]
roi_color = frame[y:y+h, x:x+w]
smiles = smile_cascade.detectMultiScale(roi_gray, 1.8, 20)
# 如果检测到笑容,标记出来
for (sx, sy, sw, sh) in smiles:
cv2.rectangle(roi_color, (sx, sy), (sx+sw, sy+sh), (0, 0, 255), 2)
# 显示图像
cv2.imshow('frame', frame)
# 按下q键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头资源
cap.release()
# 关闭所有窗口
cv2.destroyAllWindows()
```
在上述代码中,我们使用了OpenCV中的Haar级联分类器来检测人脸和笑容。首先,我们加载了人脸和笑容分类器,并通过`cv2.VideoCapture(0)`打开了摄像头。然后在每一帧图像上,我们先将其转换为灰度图像,然后使用人脸分类器检测人脸。对于每张检测到的人脸,我们使用笑容分类器检测笑容,并在图像上标记出来。最后,我们使用`cv2.imshow()`显示图像,并在按下`q`键后退出程序。