检测出运动目标后提取边界 两个函数 cvFindContours和cvBoundingRect

      1    cvFindContours( void*  img,  CvMemStorage*  storage,
                                                       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),提取运动物体的坐标。





  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值