本人玩各种AI硬件、具身智能、AI算法、模型训练、机器视觉等。欢迎合作!!!
最近有用户提到能不能识别人类性别和年龄,于是花了几天时间研究了一下。本文将带你走进人脸识别的核心应用——年龄与性别识别,并手把手教你实现一个完整的检测系统。
1. 核心代码实现
我们将编写一个函数 analyze_faces,它将完成从“调用检测API”到“绘制可视化界面”的全过程。
第一步:调用 DeepFace API 进行分析
首先,我们需要加载一张包含人脸的图片,并调用 DeepFace.analyze 方法来获取年龄和性别信息。
def analyze_faces(): img_path = "ScreenShot_2026-08-14_102642_464.png" # 调用 DeepFace 进行分析,指定 actions 为 age 和 gender results = DeepFace.analyze( img_path=img_path, actions=['age', 'gender'] ) # 读取原图用于后续绘制 img = cv2.imread(img_path) # ... 后续绘制逻辑
第二步:解析结果并绘制可视化界面
DeepFace 返回的是一个包含多个字典的列表,每个字典对应一张检测到的人脸。我们需要解析这些数据,并使用 OpenCV 将其绘制在原图上。
# 定义绘制边框的颜色 colors = [(0, 255, 0), (255, 0, 0), ...] # BGR 格式 # 遍历每一张检测到的人脸 for i, result inenumerate(results): # 1. 获取人脸位置坐标 (x, y, w, h) region = result.get('region', {}) x, y, w, h = region.get('x', 0), region.get('y', 0), region.get('w', 0), region.get('h', 0) # 2. 获取分析数据 age = result.get('age', 'N/A') dominant_gender = result.get('dominant_gender', 'N/A') gender_scores = result.get('gender', {}) # 获取 Man/Woman 的具体置信度 # 3. 绘制人脸检测框 color = colors[i % len(colors)] cv2.rectangle(img, (x, y), (x + w, y + h), color, 3) # 4. 构建标签文本并绘制带背景的标签框 # ... (构建 label_lines) # ... (计算文本大小,绘制背景矩形和文本)
第三步:展示与保存结果
最后,我们将处理好的图像保存到本地,或通过 OpenCV 的窗口展示出来。
# 保存结果 output_path = "./analyze_result.jpg" cv2.imwrite(output_path, img) # 显示结果 (如果图像过大可进行缩放) cv2.imshow("Face Analysis Results", img) cv2.waitKey(0) cv2.destroyAllWindows()
3. 效果演示
运行完整代码后,我们可以看到清晰的检测效果。系统不仅框出了人脸位置,还在右上角显示了详细的分析数据,包括预测年龄、性别置信度以及检测本身的置信度分数。
4. 总结
通过以上简单的步骤,我们就实现了一个功能强大的人脸识别系统。结合 OpenCV 的可视化能力,我们可以直观地展示 AI 的分析结果。
这种技术在智能相册、用户画像分析、安防监控等领域都有广阔的应用前景。希望这篇博文能帮助你快速入门人脸识别开发!
如需完整源码与部署协助请发送“年龄与性别识别”