OpenCV 学习笔记 05 级联分类器CascadeClassifier类

在人脸检测中,CascadeClassifier 是一个类,该类的作用是(基于官方已经训练好的数据文件 .xml)实例化一个检测器。

1 类 CascadeClassifier 的概述

首先看一下该类的所有 形参方法/函数属性/变量

 

class CascadeClassifier(builtins.object)
    Methods defined here:
    __init__(self, /, *args, **kwargs)
    __new__(*args, **kwargs) from builtins.type
    __repr__(self, /)
    
    detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) -> objects
    detectMultiScale2(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) -> objects, numDetections
    detectMultiScale3(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]]) -> objects, rejectLevels, levelWeights
    
    empty() -> retval
    getFeatureType(...) -> retval
    getOriginalWindowSize(...) -> retval
    isOldFormatCascade(...) -> retval
    load(filename) -> retval
    read(node) -> retval
    convert(oldcascade, newcascade) -> retval

2 __init__、__new__、__repr__方法

2.1 __init__

__init__(self, /, *args, **kwargs)

该方法是实现 Initialize self

2.2 __new__

 __new__(*args, **kwargs)

该方法是实现创建并返回一个对象(Create and return a new object)

2.3 __repr__

__repr__(self, /)

Return repr。

参考:

Python中__repr__和__str__区别

Python中的__init__和__new__

Python中__init__和self的意义和作用

 

Python面试之理解__new__和__init__的区别

 

3 方法detectMultiScale

3.1 detectMultiScale

检测输入图像中的(大小不同的)对象,并将检测到的对象作为矩形列表返回。

使用方法:先 CascadeClassifier 实例化一个资源句柄,假设是 abc,再调用对象中的方法,abc.detectMultiScale()

detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) -> objects

参数:

image - 灰度图,CV_8U类型的矩阵

scaleFactor - 指定在每个图像比例下图像大小减少的尺度参数,默认为1.1

minNeighbors - 指定每个候选矩形应保留多少个 “ 邻居 ”,默认3,必须是 int 类型参数

flags - 在函数cvHaarDetectObjects中。参数与旧级联具有相同含义。但不用于新的级联

minSize - 最小的对象大小,小于该值的对象将被忽略

maxSize - 最大的对象大小,大于该值的对象将被忽略

返回值:

objects - 包含有检测到对象的矢量矩形,矩形区域可以在原始图像之外。

备注:

flags对于新的分类器没有用(但目前的haar分类器都是旧版的,CV_HAAR_DO_CANNY_PRUNING利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,CV_HAAR_SCALE_IMAGE就是按比例正常检测,CV_HAAR_FIND_BIGGEST_OBJECT只检测最大的物,CV_HAAR_DO_ROUGH_SEARCH只做初略检测。

3.2 detectMultiScale2

detectMultiScale2(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) -> objects, numDetections

numDetections - 矢量检测数字的相应对象。 对象的检测数是连接在一起形成对象的相邻正分类矩形的数量。

3.3 detectMultiScale3

detectMultiScale3(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]]) 
-> objects, rejectLevels, levelWeights

 

 

官方网站:https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html#cascadeclassifier-detectmultiscale

转载于:https://www.cnblogs.com/gengyi/p/10392116.html

你可能感兴趣的:(人工智能,python,面试)