OpenCV目录中data文件夹中的XML文件详细介绍

目录

一、引言

二、介绍

三、代码实现(举例:检测猫的脸部) 

四、总结


一、引言

在OpenCV(Open Source Computer Vision Library)的目录中的data文件夹中,通常包含了一些预训练的XML文件,这些文件用于不同的计算机视觉任务,如面部检测、对象识别、人眼检测等。这些XML文件包含了模型的训练数据和配置信息,可以被用于加载训练好的机器学习模型,以便在你的应用程序中执行各种计算机视觉任务。

二、介绍

1、haarcascade_frontalface_default.xml:用于检测图像中的人脸。

2、haarcascade_eye.xml:用于检测图像中的眼睛。

3、haarcascade_smile.xml:用于检测笑容。

4、haarcascade_upperbody.xml: 用于检测图像中的上半身部分,包括头和肩膀。

5、haarcascade_fullbody.xml:用于检测整个身体。

6、lbpcascade_frontalface.xml:也用于检测人脸,采用了不同的级联分类器(Local Binary Pattern)。

7、haarcascade_eye_tree_eyeglasses.xml:用于检测带眼镜的眼睛。

8、haarcascade_frontalcatface.xml:用于检测猫的脸部。

9、haarcascade_frontalcatface_extended.xml:用于识别猫的面部特征,包括猫的眼睛、鼻子和嘴巴等。

10、haarcascade_frontalface_alt.xml:用于检测图像中的人脸。

11、haarcascade_frontalface_alt2.xml:用于检测图像中的人脸。

12、haarcascade_frontalface_alt_tree.xml:用于识别人的面部特征,包括人的眼睛、鼻子和嘴巴等。

13、haarcascade_lefteye_2splits.xml:用于检测图像或视频流中的左眼。

14、haarcascade_licence_plate_rus_16stages.xml:用于检测图像或视频帧中的车牌,特别是俄罗斯车牌。

15、haarcascade_lowerbody.xml:可以识别与下半身相关的模式和特征,通常包括腹部和臀部区域。

16、haarcascade_profileface.xml:用于检测图像或视频流中的配置文件人脸。

17、haarcascade_righteye_2splits.xml:检测图像或视频流中的右眼。

18、haarcascade_russian_plate_number.xml:用于检测俄罗斯车牌。

三、代码实现(举例:检测猫的脸部) 

objects = cv2.CascadeClassifier.detectMultiScale( image[,scaleFactor
                     [,minNeighbors[, flags[, minSize[,maxSize]]]]] )
其中,各个参数及返回值的含义如下。
·image:待检测图像,通常为灰度图像。
·scaleFactor:表示在前后两次相继扫描中搜索窗口的缩放比例。识别,扫描,按照不同比例来进行扫描
·minNeighbors:表示构成检测目标的相邻矩形的最小个数。在默认情况下,该参数的值为 3,
      表示有 3 个以上的检测标记存在时才认为存在猫脸。如果希望提高检测的准确率可以将该参数的值设置得更大,
      但这样做可能会让一些猫脸无法被检测到。
flags: 该参数通常被省略。在使用低版本 OpenCV (OpenCV 1.X 版本)时,该参数可能会被设置为
CV_HAAR_DO_CANNY_PRUNING,表示使用 Canny 边缘检测器拒绝一些区域。
·minSize: 目标的最小尺寸,小于这个尺寸的目标将被忽略。
·maxSize: 目标的最大尺寸,大于这个尺寸的目标将被忽略。通常情况下,将该可选参数省略即可。
          若 maxSize 和 minSize 大小一致,则表示仅在一个尺度上查找目标。
·objects: 返回值,目标对象的矩形框向量组。该值是一组矩形信息,
      包含每个检测到的猫脸对应的矩形框的信息 (x轴方向位置、y轴方向位置、宽度、高度)。
import cv2 #导入所需要的库

#将图片读取为灰度图片
image = cv2.imread('cat(1).jpg') 
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 创建包含分类器参数的经过训练的 XML 文件的实例并加载该文件。
faceCascade = cv2.CascadeClassifier('haarcascade_frontalcatface.xml')

# 执行人脸检测
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.02, minNeighbors=20, minSize=(8, 8))

在检测到的人脸周围绘制矩形
for i, (x, y, w, h) in enumerate(faces):
    rect = cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 3)
cv2.imshow("rect", rect)
cv2.waitKey(0)

 代码运行结果:

四、总结

这些XML文件包含了用于检测特定目标的级联分类器的信息。你可以使用OpenCV库中的类来加载这些XML文件并将它们应用于图像。这允许你在图像中识别人脸、眼睛、笑容等。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在OpenCV,可以使用haarcascade_frontalface_alt.xml文件来实现人脸检测。这个文件位于OpenCV库的\opencv\sources\data\haarcascades\文件夹下。\[1\] 除了人脸检测,OpenCV还提供了其他的模型建模流程,例如使用FisherFaceRecognizer_create()来进行人脸识别。\[2\] 如果你想使用预先训练的模型,可以在OpenCV安装的\opencv\sources\data\haarcascades_cuda文件夹找到,并使用cv2.CascadeClassifier()方法来读取。\[3\] #### 引用[.reference_title] - *1* [【opencv人脸识别1】从图片检测人脸](https://blog.csdn.net/u012679707/article/details/80376969)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [11 OpenCV图像识别之人脸识别](https://blog.csdn.net/nkufang/article/details/129128265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OpenCV人脸识别](https://blog.csdn.net/weixin_46143152/article/details/122689082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值