在人脸检测中,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