当前位置: 首页 > news >正文

深度学习篇---Opencv中的Haar级联分类器


文章目录

  • 1.Haar 级联分类器配置文件的结构
  • 2.OpenCV 自带的 Haar 级联分类器配置文件
    • 2.1人脸检测
      • 2.1.1haarcascade_frontalface_default.xml
      • 2.1.2haarcascade_frontalface_alt.xml
      • 2.1.3haarcascade_frontalface_alt2.xml
      • 2.1.4haarcascade_frontalface_alt_tree.xml
    • 2.2眼睛检测
      • 2.2.1haarcascade_eye.xml
      • 2.2.2haarcascade_eye_tree_eyeglasses.xml
    • 2.3微笑检测
      • 2.3.1haarcascade_smile.xml
    • 2.4全身检测
      • 2.4.1haarcascade_fullbody.xml
    • 2.5上半身检测
      • 2.5.1haarcascade_upperbody.xml
    • 2.6下半身检测
      • 2.6.1haarcascade_lowerbody.xml
    • 2.7行人检测
      • 2.7.1haarcascade_pedestrian.xml
  • 3.使用 Haar 级联分类器配置文件


OpenCV 中的 Haar 级联分类器是一种基于 Haar 特征的目标检测方法,广泛应用于人脸检测、眼睛检测、行人检测等任务。Haar 级联分类器的核心是使用预先训练好的分类器模型,这些模型通常以 XML 文件的形式提供。OpenCV 自带了一些常用的 Haar 级联分类器配置文件,用户也可以根据需要训练自己的分类器。


1.Haar 级联分类器配置文件的结构

Haar 级联分类器的配置文件是一个 XML 文件,包含了分类器的结构、特征、阈值等信息。以下是配置文件的主要组成部分:

<cascade> 标签:

    这是 XML 文件的根标签,包含了整个级联分类器的信息。

<stageType> 标签:

    指定级联分类器的类型,通常是 "BOOST"(基于 AdaBoost 算法)。

<featureType> 标签:

    指定特征类型,通常是 "HAAR"(Haar 特征)。

<height> 和 <width> 标签:

    指定检测窗口的大小(以像素为单位),通常是 24x24。

<stageParams> 标签:

    包含级联分类器的参数,如弱分类器的数量、最大误检率等。

<featureParams> 标签:

    包含特征参数,如 Haar 特征的最大数量等。

<stages> 标签:

    包含所有级联阶段的列表。每个阶段都是一个 <_> 标签,包含该阶段的弱分类器和其他参数。

<trees> 标签:

    包含该阶段的决策树(弱分类器)。每个决策树是一个 <_> 标签,包含多个节点。

<feature> 标签:

    指定 Haar 特征的矩形区域及其权重。

<threshold> 标签:

    指定分类器的阈值,用于判断是否通过该阶段的分类。

2.OpenCV 自带的 Haar 级联分类器配置文件

OpenCV 提供了一些常用的 Haar 级联分类器配置文件,这些文件通常位于 OpenCV 安装目录的 data/haarcascades/ 目录下。以下是一些常见的配置文件:

2.1人脸检测

2.1.1haarcascade_frontalface_default.xml

    haarcascade_frontalface_default.xml:用于检测正面人脸。

2.1.2haarcascade_frontalface_alt.xml

    haarcascade_frontalface_alt.xml:另一种正面人脸检测模型。

2.1.3haarcascade_frontalface_alt2.xml

    haarcascade_frontalface_alt2.xml:改进的正面人脸检测模型。

2.1.4haarcascade_frontalface_alt_tree.xml

    haarcascade_frontalface_alt_tree.xml:基于树结构的正面人脸检测模型。

2.2眼睛检测

2.2.1haarcascade_eye.xml

    haarcascade_eye.xml:用于检测眼睛。

2.2.2haarcascade_eye_tree_eyeglasses.xml

    haarcascade_eye_tree_eyeglasses.xml:用于检测戴眼镜的眼睛。

2.3微笑检测

2.3.1haarcascade_smile.xml

    haarcascade_smile.xml:用于检测微笑。

2.4全身检测

2.4.1haarcascade_fullbody.xml

    haarcascade_fullbody.xml:用于检测全身。

2.5上半身检测

2.5.1haarcascade_upperbody.xml

    haarcascade_upperbody.xml:用于检测上半身。

2.6下半身检测

2.6.1haarcascade_lowerbody.xml

    haarcascade_lowerbody.xml:用于检测下半身。

2.7行人检测

2.7.1haarcascade_pedestrian.xml

    haarcascade_pedestrian.xml:用于检测行人。

3.使用 Haar 级联分类器配置文件

在 OpenCV 中使用 Haar 级联分类器配置文件非常简单。以下是一个使用 haarcascade_frontalface_default.xml 进行人脸检测的示例代码:

import cv2

#加载 Haar 级联分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

#读取图像
img = cv2.imread('test.jpg')

#转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

#绘制检测到的人脸
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)

#显示结果
cv2.imshow('Detected Faces', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Haar 级联分类器是 OpenCV 中一种强大的目标检测工具,适用于多种检测任务。OpenCV 提供了多种预训练的 Haar 级联分类器配置文件,用户也可以根据需要训练自定义的分类器。通过理解配置文件的结构和使用方法,可以更好地应用 Haar 级联分类器进行目标检测。


相关文章:

  • 【Python运维】用Python编写云服务监控工具:实时监测和报警
  • Android 列表页面终极封装:SmartRefreshLayout + BRVAH 实现下拉刷新和加载更多
  • PGSQL基本使用
  • 深圳南柯电子|净水器EMC测试整改:水质安全与电磁兼容性的双赢
  • Word文档标题关联图片提取工具实现原理
  • React学习笔记15
  • MySQL行列转化
  • Vision Mamba论文精读笔记
  • 基于Redis实现限流的几种方式
  • MySQL 连接的使用
  • 嵌入式Zephyr RTOS面试题及参考答案
  • 【原创】springboot+vue校园外卖订餐网系统设计与实现
  • Kubeflow 2025 全栈式机器学习平台部署指南(云原生+量子混合计算)
  • 【Python办公自动化】—Excel中相同编号自动添加-1-2-3...
  • Linux--git
  • python学习笔记-mysql数据库操作
  • C语言刷题第三章(上)
  • Windows 系统下安装 RabbitMQ 的详细指南
  • word甲烷一键下标——宏
  • Echarts 柱状或折线或其他多数据图表自动向右滚动
  • 网站建设的目标有哪些/免费b站推广软件
  • 做汽配网站需要多少钱/专业seo网站
  • 做一家算命的网站/培训机构优化
  • up网络推广公司/东莞网站建设优化诊断
  • 信息网络设计/上海百度推广优化排名
  • 浙江坤宇建设有限公司网站/公众号推广