TensorFlow读取图片进行人脸性别年龄识别
时间: 2024-03-08 13:38:18 浏览: 124
TensorFlow可以通过读取图片进行人脸性别年龄识别,一般用到的是基于卷积神经网络的人脸识别算法。
以下是一个简单的示例代码,用于读取图片进行人脸性别年龄识别:
```python
import cv2
import tensorflow as tf
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
# 加载性别和年龄模型
gender_model = tf.keras.models.load_model('./gender_model.h5')
age_model = tf.keras.models.load_model('./age_model.h5')
# 读取图片
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]
# 重设大小为模型输入大小
resized = cv2.resize(face_img, (128, 128))
normalized = resized / 255.0
# 预测性别和年龄
gender_pred = gender_model.predict(np.array([normalized]))
age_pred = age_model.predict(np.array([normalized]))
# 获取性别和年龄
gender = "Male" if gender_pred[0][0] > 0.5 else "Female"
age = int(age_pred[0][0])
# 在图片上绘制性别和年龄
cv2.putText(img, f"{gender}, {age}", (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (36,255,12), 2)
# 显示图片
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
需要注意的是,此代码中使用的人脸检测器是Haar级联检测器,可能存在一定的误检率。如果需要更高的精度,可以考虑使用基于深度学习的人脸检测算法。
阅读全文