opencv-haar分类器的基本使用

一、分类器选择

在opencv文件路径下,有着4个haar特征训练的级联分类器,借用官方文档的说明来简单解释下互相之间的区别

haarcascade_frontalface_alt.xml:

Stump-based 20x20 gentle adaboost frontal face detector.

haarcascade_frontalface_alt_tree.xml:

Stump-based 20x20 gentle adaboost frontal face detector. This detector uses tree of stage classifiers instead of a cascade(该检测器使用阶段分类器树而不是级联)

haarcascade_frontalface_alt2.xml:

Tree-based 20x20 gentle adaboost frontal face detector.

haarcascade_frontalface_default.xml:

Stump-based 24x24 discrete(?) adaboost frontal face detector.

对于分类器的选择,可以简单的写一下代码,输入目标类图像,通过更改分类器地址,来简单选择需要的分类器。

import cv2
def face_catch():
    gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
    #选择对应的分类器
    face_detect = cv2.CascadeClassifier(r"E:\python\Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml")
    #使用分类器
    face = face_detect.detectMultiScale(gray)
    #绘制矩形框来显示检测到的人脸,使用红色,线条粗细2像素
    for x,y,w,h in face:
        cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
    cv2.imshow('result',img)
    cv2.waitKey(0)  
    cv2.destroyWindow('result')
img = cv2.imread(r"C:\Users\yuehen\Desktop\face_catch.jpg")
face_catch()

haarcascade_frontalface_alt:

haarcascade_frontalface_alt_tree:

haarcascade_frontalface_alt2:

haarcascade_frontalface_default:

 笔者这里选择最接近实际的haarcascade_frontalface_alt2分类器。

二、分类器参数设定

我们主要使用detectMultiScale函数调用分类器,具体参数如下:

face = face_detect.detectMultiScale(image,object,scaleFactor,minNeighbors,flags,minSize,maxSize)
'''
image:输入的待检测图像。

objects:检测到的目标的矩形框位置和尺寸。

scaleFactor:每次缩放图像的比例尺。

minNeighbors:表示每个候选矩形框应该保留的最少邻居个数,用于过滤掉过多的重叠矩形框。

flags:用于标记特定检测器的附加功能。

minSize:目标最小尺寸。

maxSize:目标最大尺寸。
'''

譬如:

face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
'''
gray:图像对象
scaleFactor=1.1:缩放1.1倍
minNeighbors=5:至少有5次重叠检测,我们才认为人脸确实存在
minSize=(30, 30):低于30*30的不作为人脸对象
'''

我们可以通过参数的调整来优化筛选效果,但是这些参数调整只会提高某一张特定图片的成像质量,所以我们一般不会通过调整参数来提高成像质量(除非是用于大批量高重叠特性的图片筛选),而是根据后期训练自己的分类器来提高特定需求的成像质量

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渊兮旷兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值