CvSeq** firstContour, int cntHeaderSize,
int mode, int method, CvPoint offset )
作用:检索二值图像中所有的边界轮廓,并返回检测到的轮廓个数。
参数解释:
img :8比特单通道的源二值图像。非零像素作为1处理,0像素保存不变;
storage :返回轮廓的容器;
first_contour : 输出参数,用于存储指向第一个外接轮廓;
header_size : header序列的尺寸.一般情况是 header_size >= sizeof(CvContour);
mode:(默认1)
CV_RETR_EXTERNAL:只检索最外面的轮廓;
CV_RETR_LIST:检索所有的轮廓,并将其放入list中;
CV_RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;
CV_RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次。
method :边缘近似方法
CV_CHAIN_CODE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)。
CV_CHAIN_APPROX_NONE:将所有的连码点,转换成点。
CV_CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。
CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS:使用the flavors of Teh-Chin chain近似算法的一种。
CV_LINK_RUNS:通过连接水平段的1,使用完全不同的边缘提取算法。使用CV_RETR_LIST检索模式能使用此方法。
offset : 偏移量,用于移动所有轮廓点。
2 cvBoundingRect( CvArr* points, int update=0 )
作用:返回二维点集的最外面 (up-right)矩形边界
参数解释
points 二维点集,点的序列或向量 (CvMat)
update 更新标识。
update=0, contour ~ CvContour*: 不计算矩形边界,但直接由轮廓头的 rect 域得到。
update=1, contour ~ CvContour*: 计算矩形边界,而且将结果写入到轮廓头的 rect 域中 header。
update=0, contour ~ CvSeq* or CvMat*: 计算并返回边界矩形。
update=1, contour ~ CvSeq* or CvMat*: 产生运行错误 (runtime error is raised)。
备注:在做运动目标检测时,到后面进行跟踪环节,采用cvFindContours( pBkImg, storage, &contour, sizeof(CvContour),mode, CV_CHAIN_APPROX_SIMPLE)和cvBoundingRect(contour, 0),提取运动物体的座标。