通过Haar级联检测器检测眼睛、嘴巴和手并截图
时间: 2023-12-28 13:06:03 浏览: 79
人脸检测Haar特征查看器
以下是一个Python程序示例,可以使用Haar级联检测器检测眼睛、嘴巴和手,并在检测到它们时进行截图:
```python
import cv2
# 加载Haar级联检测器
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
mouth_cascade = cv2.CascadeClassifier('haarcascade_mouth.xml')
hand_cascade = cv2.CascadeClassifier('haarcascade_hand.xml')
# 打开摄像头
cap = cv2.VideoCapture(0)
# 用于保存截图的计数器
count = 0
while True:
# 读取摄像头的帧
ret, frame = cap.read()
# 将帧转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测眼睛
eyes = eye_cascade.detectMultiScale(gray, 1.3, 5)
# 检测嘴巴
mouths = mouth_cascade.detectMultiScale(gray, 1.3, 5)
# 检测手
hands = hand_cascade.detectMultiScale(gray, 1.3, 5)
# 在检测到眼睛、嘴巴或手时进行截图
for (x,y,w,h) in eyes:
cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2)
cv2.imwrite(f'eye_{count}.jpg', frame[y:y+h, x:x+w])
count += 1
for (x,y,w,h) in mouths:
cv2.rectangle(frame, (x,y), (x+w,y+h), (255,0,0), 2)
cv2.imwrite(f'mouth_{count}.jpg', frame[y:y+h, x:x+w])
count += 1
for (x,y,w,h) in hands:
cv2.rectangle(frame, (x,y), (x+w,y+h), (0,0,255), 2)
cv2.imwrite(f'hand_{count}.jpg', frame[y:y+h, x:x+w])
count += 1
# 显示帧
cv2.imshow('frame',frame)
# 按下q键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
```
在这个示例中,我们加载了三个Haar级联检测器,分别用于检测眼睛、嘴巴和手。在每个检测到的区域上,我们使用cv2.rectangle函数绘制矩形,并使用cv2.imwrite函数将该区域保存为一张图片。我们在保存的图片文件名中加入计数器,以便对不同的截图进行区分。
阅读全文