python 来识别人脸年龄性别代码
时间: 2024-01-07 15:04:05 浏览: 122
以下是使用 Python 和 OpenCV 进行人脸年龄性别识别的代码:
```
import cv2
import numpy as np
# 加载人脸检测器和性别年龄分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
gender_net = cv2.dnn.readNetFromCaffe('gender_net.prototxt', 'gender_net.caffemodel')
age_net = cv2.dnn.readNetFromCaffe('age_net.prototxt', 'age_net.caffemodel')
# 预设的性别列表和年龄段
GENDER_LIST = ['Male', 'Female']
AGE_BUCKETS = [i for i in range(0, 101)]
# 加载图片并进行灰度转换
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸并进行性别年龄分类
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
face_img = img[y:y+h, x:x+w].copy()
blob = cv2.dnn.blobFromImage(face_img, 1, (227, 227), (78.4263377603, 87.7689143744, 114.895847746), swapRB=False)
# 预测性别
gender_net.setInput(blob)
gender_preds = gender_net.forward()
gender = GENDER_LIST[gender_preds[0].argmax()]
# 预测年龄
age_net.setInput(blob)
age_preds = age_net.forward()
age = int(age_preds[0].dot(AGE_BUCKETS))
# 在图像上绘制矩形框和性别年龄信息
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
text = "{} {}".format(gender, age)
cv2.putText(img, text, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`haarcascade_frontalface_default.xml` 是 OpenCV 自带的人脸检测器,`gender_net.prototxt` 和 `gender_net.caffemodel` 是预训练的性别分类器,`age_net.prototxt` 和 `age_net.caffemodel` 是预训练的年龄分类器。在运行代码前,请确保这些文件都已准备好,并处于正确的路径下。
这段代码将读取一张名为 `test.jpg` 的图片,进行人脸年龄性别识别,并在图片上绘制矩形框和性别年龄信息。你可以根据需要替换图片路径来进行测试。
阅读全文