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

OpenCV 学习笔记 05 级联分类器CascadeClassifier类的更多相关文章

  1. OpenCV 学习笔记 05 人脸检测和识别

    本节将介绍 Haar 级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配. 本章将考虑如何将多个  Haar 级联分类器构成一个层次结构,即一个分类器能识别整体区域(如人脸) ...

  2. OpenCV 学习笔记 05 人脸检测和识别 AttributeError: module 'cv2' has no attribute 'face'

    1 环境设置: win10 python 3.6.8 opencv 4.0.1 2 尝试的方法 在学习人脸识别中,遇到了没有 cv2 中没有 face 属性.在网上找了几个方法,均没有成功解决掉该问题 ...

  3. OpenCV 学习笔记 07 目标检测与识别

    目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV ...

  4. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  5. opencv学习笔记(三)基本数据类型

    opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...

  6. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  7. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  8. OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

    http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...

  9. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

随机推荐

  1. POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)

    题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前 ...

  2. 【noip模拟赛5】细菌

    描述 近期,农场出现了D(1<=D<=15)种细菌.John要从他的 N(1<=N<=1,000)头奶牛中尽可能多地选些产奶.但是如果选中的奶牛携带了超过 K (1<=K ...

  3. 算法竞赛入门经典-训练指南(10881-Piotr's Ants)

    题目大意: 一根长度为L的木棍一堆蚂蚁爬,向左或向右,速度都为1,若两蚂蚁碰撞则同时转头(转身时间忽略不计),问T时间之后每只蚂蚁的位置: 输入:t,(t个样例),每个样例输入 L,T,n,接下来是n ...

  4. Android 7.0 PopupWindow 又引入新的问题,Google工程师也不够仔细么

    Android7.0 PopupWindow的兼容问题   Android7.0 中对 PopupWindow 这个常用的控件又做了一些改动,修复了以前遗留的一些问题的同时貌似又引入了一些问题,本文通 ...

  5. hdu4035 Maze

    题目链接 hdu4035 Maze 题解 f[u]表示在节点u通关的所需的边数期望 转移方程分叶子节点和非叶子点讨论 发现都可以化成f[x]=af[1]+bf[dad]+c的形式 然后推一下系数 还是 ...

  6. ios真机调试错误解决:Installation of apps is prohibited by a policy on the device

    该问题的出现原因是手机中的访问权限被关闭了,打开方法如下: 设置->通用->访问限制->安装应用程序

  7. angular2项目关于主页结构分析

    这里需要弄清楚两个问题: 一:主页模块如何加载进来 angular2的根模块应用加载之后便会根据根模块路由信息来加载主页模块 export const appRoutes=[ { path:'', r ...

  8. CocosCreator编辑器脚本生命周期函数

    Cocos Creator 为组件脚本提供了生命周期的回调函数.用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们. 目前提供给用户的生命周期回调函数 ...

  9. POST数据中有特殊符号导致数据丢失的解决方法

    使用Ajax传送数据时,当数据中存在加号(+).连接符(&)或者百分号(%)时,服务器端接收数据时会丢失数据.分析Ajax传送数据的格式与Javascript的语法: 1. "+&q ...

  10. STL——map/unordered_map基础用法

    map /multimap map是STL里重要容器之一. 它的特性总结来讲就是:所有元素都会根据元素的键值key自动排序(也可根据自定义的仿函数进行自定义排序),其中的每个元素都是<key,  ...