寻找轮廓

轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线.表示的方法可能根据不同情况而有所不同.有多重方法可以表示曲线.在openCV中一般用序列来存储轮廓信息.序列中的每一个元素是曲线中一个点的位置.关于序列表示的轮廓细节将在后面讨论,现在只要简单把轮廓想象为使用CvSeq表示的一系列的点就可以了.

第一函数是cvFindContours(),在前面已经提到.接着是cvStartFindContiors()函数,它和cvFin的Contours()功能类似.但是cvStartFindContours()每次放回一个轮廓,而不像cvFinContours()那样一次查找所有轮廓然后统一返回.调用cvStartFindContours()函数后,返回一个CvSequenceScanner结构.CvSequenceScanner结构中包含一些状态信息,这些信息不可读.你可以通过在cvSequenceScabber结构上依次调用cvFinNextContour()来查找剩余的轮廓.当全部轮廓都被找完之后,cvFindNextContour()将放回NULL

 

cvSubstituteContour()函数用于替换scanner指向的轮廓.该函数的一个特性是,如果参数 new_contour为NULL,那么当前的轮廓将被从Scanner指定的树或链表中删除(受影响的序列会作适当更新,来保证不会有指针指向不存在的物体).

函数cvEndFindContour()结束轮廓查找,并且将scanner设置为结束状态.注意,scanner并没有被删除,实际上该函数返回的是指针所指序列的第一个元素.

最后一个函数cvApproxChains()函数.该函数将Freeman链转换为多边形表示(精确转换或者近似拟合).

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值