资源描述:
《扫描器查找轮廓》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、使用轮廓扫描器查找轮廓(组合函数)喻小波总述:2API函数名:2运行实例效果:2cvStartFindContours函数:3输入:3输出:3运行逻辑:4cvFindNextContour函数:5输入:5输出:5运行逻辑:5cvSubstituteContour函数:6输入:6输出:6运行逻辑:6cvEndFindContours函数:6输入:6输出:6运行逻辑:6运行实例:7使用场合:7使用注意:7例子流程:7综合总结:7总述:本文中四个API是一组,是一种轮廓查找的方法!(Cvcontours.c),API运行效果见实例运行效果!这四个API为了解决一幅图像有多个轮廓的问题,
2、通过这四个API可将一幅图像中多个轮廓变成多个序列块。而FINDCONTOURS,是将所有的轮廓做一个序列链表,无法实现多个轮廓序列块的地址。API函数名:cvStartFindContours:初始化轮廓扫描器cvFindNextContour:使用初始好的轮廓扫描器查找一个轮廓(返回序列指针)cvSubstituteContour:用户自定义的轮廓替换前一次的函数cvFindNextContour所提取的轮廓cvEndFindContours:结束轮廓扫描器,也就是释放扫描器空间运行实例效果:四个API一个实例!见实例。。。。。。cvStartFindContours函数:c
3、vStartFindContours(void*_img,CvMemStorage*storage,intheader_size,intmode,intmethod,CvPointoffset)输入:image输入的8-比特、单通道二值图像输出:一个被初始好的轮廓扫描器(CvContourScanner),这个会被下一个API函数(FindNextContour)所使用.实现参数选择:storage提取到的轮廓容器,也就是CvMemStorage开辟的内存块!header_size序列头的尺寸.常用的方法,sizeof(CvContourEx),mode提取模式.有四种提取方法·
4、CV_RETR_EXTERNAL-只提取最外层的轮廓·CV_RETR_LIST-提取所有轮廓,并且放置在list中·CV_RETR_CCOMP-提取所有轮廓,并且将其组织为两层的hierarchy:顶层为连通域的外围边界,次层为洞的内层边界。·CV_RETR_TREE-提取所有轮廓,并且重构嵌套轮廓的全部hierarchy method逼近方法·CV_CHAIN_CODE-Freeman链码的输出轮廓.其它方法输出多边形(定点序列).·CV_CHAIN_APPROX_NONE-将所有点由链码形式翻译为点序列形式·CV_CHAIN_APPROX_SIMPLE-压缩水平、垂直和对角分
5、割,即函数只保留末端的象素点;·CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS-应用Teh-Chin链逼近算法.·CV_LINK_RUNS-通过连接为1的水平碎片使用完全不同的轮廓提取算法。仅有CV_RETR_LIST提取模式可以在本方法中应用.offset每一个轮廓点的偏移量,ROI偏移量,常用方法cvPoint(0,0),也就是偏移量对整个图像有效!运行逻辑:本API函数,就是对轮廓扫描器(CvContourScanner数据结构体)进行初始化,返回的给FindNextContourAPI函数使用!首先,判断输入的内存块(指
6、针不为空)和图像数据(8位单通道)的数据格式是否正确,初始化(CvContourScanner)结构体中的成员,然后对传入的图像进行二值化,方式为CV_THRESH_BINARY,如果初始化成功就返回轮廓扫描器的指针头.本API无运行实例,因为它返回是轮廓扫描器的头!另附:轮廓扫描器的数据结构:typedefstruct_CvContourScanner{CvMemStorage*storage1;/*包含提取的轮廓*/CvMemStorage*storage2;/*载有近似等高线(!=storage1ifapprox_method2!=approx_method1)*/CvMe
7、mStorage*cinfo_storage;/*存放轮廓信息节点*/CvSet*cinfo_set;/*轮廓信息的设置*/CvMemStoragePosinitial_pos;/*startingstoragepos*/CvMemStoragePosbackup_pos;/*beginningofthelatestapprox.contour*/CvMemStoragePosbackup_pos2;/*endingofthelatestapprox.contour*/char*