请在这个代码的基础上实现人脸识别,让我在窗口中看到识别到人像的框
时间: 2024-03-03 21:48:24 浏览: 21
好的,我们可以在上面的代码基础上,使用 OpenCV 提供的人脸识别功能来实现人脸识别并在窗口中框出识别到的人脸。以下是一个简单的示例代码:
```python
import cv2
# 加载人脸识别器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 打开摄像头
cap = cv2.VideoCapture(0)
# 设置摄像头的分辨率
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
while True:
# 读取摄像头的画面
ret, frame = cap.read()
# 将画面转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 人脸检测
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 在画面中框出人脸
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示画面
cv2.imshow('Camera', frame)
# 按下 q 键退出循环
if cv2.waitKey(1) == ord('q'):
break
# 释放摄像头
cap.release()
# 关闭窗口
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先使用 `cv2.CascadeClassifier()` 函数加载人脸识别器,然后使用 `cv2.VideoCapture()` 函数打开摄像头。接下来,我们使用一个循环来不断读取摄像头的画面,并使用 `cv2.cvtColor()` 函数将画面转换为灰度图像。然后,我们使用 `detectMultiScale()` 函数来进行人脸检测,并将检测到的人脸坐标存储在 `faces` 变量中。最后,我们使用 `cv2.rectangle()` 函数在画面中框出检测到的人脸。