cvHaarDetectObjects简介


cvHaarDetectObjects函数为开放计算机视觉( OpenCV )库 库函数 之一,用来检测图像中的目标


定义


CvSeq* cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade, 

 

  CvMemStorage* storage, double scale_factor=1.1, 

 

  int min_neighbors=3, int flags=0,  
 CvSize(min_size=cvSize(0,0) ,CvSize max_size=cvSize(0,0));


参数说明

mage 被检图像


cascade haar 分类器级联的内部标识形式



storage 用来存储检测到的一序列候选目标矩形框的内存区域。


scale_factor 在前后两次相继的扫描中,搜索窗口的比例系数。例如1.1指将搜索窗口依次扩大10%


min_neighbors 构成检测目标的相邻矩形的最小个数(缺省-1)。如果组成检测目标的小矩形的个数和小于 min_neighbors-1 都会被排除。如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,这种设定值一般用在用户自定义对检测结果的组合程序上。



flags 操作方式。当前唯一可以定义的操作方式是 CV_HAAR_DO_CANNY_PRUNING。如果被设定,函数利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,因为这样的区域一般不含被检目标。人脸检测中通过设定 阈值使用了这种方法,并因此提高了检测速度。


min_size 检测窗口的最小尺寸。缺省的情况下被设为 分类器训练时采用的样本尺寸(人脸检测中缺省大小是~20×20)。


关于flag不同取值的介绍


#define CV_HAAR_DO_CANNY_PRUNING 1    //这个值告诉分类器跳过平滑(无边缘)区域
       #define CV_HAAR_SCALE_IMAGE 2   //这个值告诉分类器不要缩放分类器,而是缩放图像
       #define CV_HAAR_FIND_BIGGEST_OBJECT 4  //告诉分类器只返回最大的目标
       #define CV_HAAR_DO_ROUGH_SEARCH 8  //它只能和上面一个参数一起使用,告诉分类器在任何窗口,只要第一         个候选者被发现则结束搜寻。



cvRectangle的用法



Rectangle

绘制简单、指定粗细或者带填充的 矩形

void cvRectangle(CvArr* img,CvPoint pt1,CvPoint pt2,CvScalar color,int thickness=1,int line_type=8, int shift=0 );


图像. pt1 矩形的一个顶点。 pt2 矩形对角线上的另一个顶点 color 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image) 。 thickness 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。 line_type 线条的类型。见cvLine的描述

line_type=8, 
   8 (or 0) - 8-connected line(8邻接)连接 线。
    4 - 4-connected line(4邻接)连接线。   CV_AA - antialiased 线条。

shift 坐标点的小数点位数。  

函数 cvRectangle 通过对角线上的两个顶点绘制矩形。