博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV——级联分类器(CascadeClassifier)
阅读量:6001 次
发布时间:2019-06-20

本文共 1290 字,大约阅读时间需要 4 分钟。

级联分类器的计算特征值的基础类FeatureEvaluator

功能:读操作read、复制clone、获得特征类型getFeatureType,分配图片分配窗口的操作setImage、setWindow,计算有序特征calcOrd,计算绝对特征calcCat,创建分类器特征的结构create函数。

目标级联矩形的分组函数groupRectangles

用load函数加载XML分类器文件具体步骤如下:                      {  PS:目前提供的分类器包括Haar分类器和LBP分类器(数据较少)}

    1.加载级联分类器

CascadeClassifier face_cascade;face_cascade.load("haarcascade_frontalface_alt.xml");

    2.读取视频流

    3.对每一帧使用该分类器

先对图像进行预处理——变成灰度图,并将其直方图均衡化

若检测人脸,调用detectMultiScale函数,函数详情如下:

void detectMultiScale(    const Mat& image,                //待检测灰度图像    CV_OUT vector
& objects, //被检测物体的矩形框向量 double scaleFactor = 1.1, //前后两次相继的扫描中搜索窗口的比例系数,默认为1.1 即每次搜索窗口扩大10% int minNeighbors = 3, //构成检测目标的相邻矩形的最小个数 如果组成检测目标的小矩形的个数和小于minneighbors - 1 都会被排除 //如果minneighbors为0 则函数不做任何操作就返回所有被检候选矩形框 int flags = 0, //若设置为CV_HAAR_DO_CANNY_PRUNING 函数将会使用Canny边缘检测来排除边缘过多或过少的区域 Size minSize = Size(), Size maxSize = Size() //最后两个参数用来限制得到的目标区域的范围 );

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

实例代码:

face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );

 

转载地址:http://cmbmx.baihongyu.com/

你可能感兴趣的文章
协同过滤的基本思想
查看>>
extjs grid grouping 关闭和展开
查看>>
C#以管理员权限运行源码,C#软件获取管理员权限,c#获取管理员权限
查看>>
android关闭屏幕时不锁屏实现
查看>>
阅读笔记《孙鑫-VC++深入详解》
查看>>
C#中各种集合类比较
查看>>
Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数...
查看>>
浅谈Java中的final关键字
查看>>
Insertion Sort
查看>>
[设计模式]<<设计模式之禅>>关于迪米特法则
查看>>
[Luogu3806]点分治
查看>>
HDU4288 Coder
查看>>
关于深度学习的历史
查看>>
Linux系统GEDIT编译运行C++
查看>>
ASP.NET MVC学前篇之Ninject的初步了解
查看>>
归并两个有序的数组
查看>>
lsof,ulimit,
查看>>
Navicat For Mysql 数据库备份与还原
查看>>
Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法...
查看>>
外出培训 整理第二天
查看>>