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

鼠扑  论坛元老 | 2025-3-14 16:25:12 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1042|帖子 1042|积分 3126



  

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

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

Haar 级联分类器的配置文件是一个 XML 文件,包含了分类器的结构、特性、阈值等信息。以下是配置文件的重要组成部分:
  1. <cascade> 标签:
  2.     这是 XML 文件的根标签,包含了整个级联分类器的信息。
  3. <stageType> 标签:
  4.     指定级联分类器的类型,通常是 "BOOST"(基于 AdaBoost 算法)。
  5. <featureType> 标签:
  6.     指定特征类型,通常是 "HAAR"(Haar 特征)。
  7. <height> 和 <width> 标签:
  8.     指定检测窗口的大小(以像素为单位),通常是 24x24。
  9. <stageParams> 标签:
  10.     包含级联分类器的参数,如弱分类器的数量、最大误检率等。
  11. <featureParams> 标签:
  12.     包含特征参数,如 Haar 特征的最大数量等。
  13. <stages> 标签:
  14.     包含所有级联阶段的列表。每个阶段都是一个 <_> 标签,包含该阶段的弱分类器和其他参数。
  15. <trees> 标签:
  16.     包含该阶段的决策树(弱分类器)。每个决策树是一个 <_> 标签,包含多个节点。
  17. <feature> 标签:
  18.     指定 Haar 特征的矩形区域及其权重。
  19. <threshold> 标签:
  20.     指定分类器的阈值,用于判断是否通过该阶段的分类。
复制代码
2.OpenCV 自带的 Haar 级联分类器配置文件

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

2.1.1haarcascade_frontalface_default.xml

  1.     haarcascade_frontalface_default.xml:用于检测正面人脸。
复制代码
2.1.2haarcascade_frontalface_alt.xml

  1.     haarcascade_frontalface_alt.xml:另一种正面人脸检测模型。
复制代码
2.1.3haarcascade_frontalface_alt2.xml

  1.     haarcascade_frontalface_alt2.xml:改进的正面人脸检测模型。
复制代码
2.1.4haarcascade_frontalface_alt_tree.xml

  1.     haarcascade_frontalface_alt_tree.xml:基于树结构的正面人脸检测模型。
复制代码
2.2眼睛检测

2.2.1haarcascade_eye.xml

  1.     haarcascade_eye.xml:用于检测眼睛。
复制代码
2.2.2haarcascade_eye_tree_eyeglasses.xml

  1.     haarcascade_eye_tree_eyeglasses.xml:用于检测戴眼镜的眼睛。
复制代码
2.3微笑检测

2.3.1haarcascade_smile.xml

  1.     haarcascade_smile.xml:用于检测微笑。
复制代码
2.4全身检测

2.4.1haarcascade_fullbody.xml

  1.     haarcascade_fullbody.xml:用于检测全身。
复制代码
2.5上半身检测

2.5.1haarcascade_upperbody.xml

  1.     haarcascade_upperbody.xml:用于检测上半身。
复制代码
2.6下半身检测

2.6.1haarcascade_lowerbody.xml

  1.     haarcascade_lowerbody.xml:用于检测下半身。
复制代码
2.7行人检测

2.7.1haarcascade_pedestrian.xml

  1.     haarcascade_pedestrian.xml:用于检测行人。
复制代码
3.利用 Haar 级联分类器配置文件

在 OpenCV 中利用 Haar 级联分类器配置文件非常简单。以下是一个利用 haarcascade_frontalface_default.xml 举行人脸检测的示例代码:
  1. import cv2
  2. #加载 Haar 级联分类器
  3. face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
  4. #读取图像
  5. img = cv2.imread('test.jpg')
  6. #转换为灰度图像
  7. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  8. #检测人脸
  9. faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
  10. #绘制检测到的人脸
  11. for (x, y, w, h) in faces:
  12.     cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
  13. #显示结果
  14. cv2.imshow('Detected Faces', img)
  15. cv2.waitKey(0)
  16. cv2.destroyAllWindows()
复制代码
Haar 级联分类器是 OpenCV 中一种强大的目标检测工具,实用于多种检测使命。OpenCV 提供了多种预训练的 Haar 级联分类器配置文件,用户也可以根据需要训练自界说的分类器。通过明白配置文件的结构和利用方法,可以更好地应用 Haar 级联分类器举行目标检测。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表