计算机识别中的人脸检测

一、介绍

本次将使用OpenCV的Haar级联分类器对一张静态图片进行人脸检测,在检测到的每个人脸周围绘制绿色矩形框,并输出检测到的人脸数量和位置坐标。

二、Haar级联分类器工作原理

特征:使用Haar-like矩形特征(边缘、线段、中心特征),通过积分图快速计算。

训练:Adaboost算法挑选关键特征并组合成弱分类器,再级联成强分类器。

检测:滑动窗口在不同尺度的图像金字塔上扫描,每一级快速排除非人脸区域,最终通过所有级的区域被判定为人脸。

三、核心代码讲解

3.1 首先导入cv2,读取图像。

3.2将原图转换为灰度图

Haar级联分类器要求输入为灰度图像(单通道),因为特征计算基于亮度差异,忽略颜色信息可以减少计算量并提高检测稳定性。

cv2.cvtColor()将BGR转换为灰度

3.3加载Haar级联分类器

cv2.CascadeClassifier()创建一个级联分类器对象。

cv2.data.haarcascades是OpenCV自带的预训练Haar特征XML文件所在目录的路径,haarcascade_frontalface_default.xml是用于检测正面人脸的经典模型。

该分类器基于AdaBoost训练,包含多个阶段的强分类器,通过级联方式快速排除非人脸区域。

3.4执行人脸检测

detectMultiScale()是核心检测函数,返回一个列表,每个元素为 (x, y, w, h) 表示人脸矩形左上角坐标和宽高。

scaleFactor=1.05:图像金字塔的缩放比例。每次将图像缩小为原来的 1/1.05 ≈ 0.952,以检测不同大小的人脸。值越接近 1,搜索的尺度越精细,耗时越长,但漏检率降低;值过大(如 1.3)则速度更快但可能漏检小脸。这里 1.05 较精细。

minNeighbors=9:每个候选矩形至少需要多少个邻近检测框才被保留。值越大,对误检的抑制越强,但也会漏掉一些真正的人脸(尤其当人脸被遮挡或角度不佳时)。常用范围 3~6,这里设置为 9 较为严格,适合高精度需求。

minSize=(8,8):检测目标的最小尺寸(像素)。小于该尺寸的人脸会被忽略,可以加快检测速度并过滤噪声。这里 8×8 非常小,几乎能检测任何微小人脸(但实际效果受模型训练尺度影响)。

输出faces是一个二维数组,例如 [[112, 45, 80, 80], [300, 150, 60, 60]]

3.5 绘制矩形框

遍历每个人脸矩形,在原图上绘制绿色边框。

cv2.rectangle()参数:图像、左上角坐标、右下角坐标、颜色(BGR,此处是绿色)、线宽。

相关推荐
lovingsoft几秒前
AI 开发的软件质量如何保证?一套可落地的 LLM 应用质量工程体系(QA 视角)
人工智能
小易测试笔记12 分钟前
如何选择适合的半导体静电放电测试设备,易捷测试 Hanwa中国区代理提供哪些支持?
人工智能
益莱储中国13 分钟前
益莱储任命 Vincent Kwa为亚太区副总裁兼总经理
大数据·人工智能
鬼手点金15 分钟前
上下文:Agent 的眼睛
java·前端·人工智能·git·深度学习
具身AGI19 分钟前
一块远程显卡服务一队机器人,瓶颈不在模型
人工智能·机器人
hzxxxz19 分钟前
AI任务分流链路:从3层可验证路由到判断力留痕
人工智能
我有酒两杯21 分钟前
从一条样本看懂 Kev:数据、模型、训练与推理
人工智能·深度学习·机器学习·lora·大语言模型
EterNity_TiMe_23 分钟前
Docker服务越装越多记不住端口?我用Fenrus把NAS里的常用入口整理成一个导航页
运维·人工智能·docker·ai·容器·cpolar
晨间晓34 分钟前
图片里的关键点怎么找?用华为云码道开发 OpenCV FAST 特征点检测工具
人工智能·opencv·华为云
科创致远34 分钟前
科创致远 ESD 静电监控全景落地指南
人工智能·信息可视化·制造·精益工程