用opencv写一个Python程序进行人脸识别,并预测性别和年龄
时间: 2023-06-08 10:08:56 浏览: 248
好的,我可以为您提供一些参考代码,用于人脸识别和性别年龄预测的实现。请参考以下代码:
```python
import cv2
# 加载分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
gender_net = cv2.dnn.readNetFromCaffe('gender_deploy.prototxt', 'gender_net.caffemodel')
age_net = cv2.dnn.readNetFromCaffe('age_deploy.prototxt', 'age_net.caffemodel')
# 加载图片并进行人脸检测
img = cv2.imread('face.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
# 对每个人脸进行性别和年龄预测
for (x, y, w, h) in faces:
face_img = img[y:y+h, x:x+w].copy()
face_blob = cv2.dnn.blobFromImage(face_img, 1, (227, 227), (78.4263377603, 87.7689143744, 114.895847746), swapRB=False)
gender_net.setInput(face_blob)
gender_preds = gender_net.forward()
gender = "Male" if gender_preds[0][0] > gender_preds[0][1] else "Female"
age_net.setInput(face_blob)
age_preds = age_net.forward()
age = age_preds[0].dot(list(range(0, 101)))
# 在图片中画出人脸矩形框和预测结果
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv2.putText(img, f'{gender}, {age:.0f}', (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)
# 显示结果图片
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个程序中,我们使用了OpenCV进行人脸检测,并使用了预先训练好的神经网络模型进行性别和年龄预测。您需要下载并将相应的模型文件保存在您的工作目录中。运行程序后,程序将打开一张名为“face.jpg”的图片,并在图片中标出人脸矩形框,并显示性别和年龄预测结果。
请注意,这只是一个简单的示例,您需要针对您的应用场景进行相应的调整和优化。
阅读全文