cv2.findContours()返回函数详解, findContours()
来源:互联网 发布:bug什么意思网络用语 编辑:程序博客网 时间:2024/05/16 17:46
对于cv2.findContours() 函数,相信很多人都在使用,利用其进行轮廓的寻找,之后利用cnt[num],对第num个轮廓进行操作,但是该函数返回的三个参数具体表示的是什么呢?
下面就进行详细介绍,为了能够使读者更加深入的理解,利用下面的例程进行具体分析。
准备材料:图片一张(作者手动画图软件绘制的)
Python程序如下:
improve cv2improve numpy as npimg=cv2.imread('test.jpg')imgray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret,thresh=cv2.thrshold(imgray,127,255,0)image,cnts,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)cv2.imshow('imageshow',image) # 显示返回值image,其实与输入参数的thresh原图没啥区别cv2.waitKey()print(np.size(cnts)) # 得到该图中总的轮廓数量print(cnts[0]) # 打印出第一个轮廓的所有点的坐标, 更改此处的0,为0--(总轮廓数-1),可打印出相应轮廓所有点的坐标print(hierarchy) #打印出相应轮廓之间的关系img=cv2.drawCountours(img,[cnts[0]],-1,(0,255,0),10) #标记处编号为0的轮廓cv2.imshow('drawimg',img)cv2.waitKey()
输出结果为:
5 ###说明总轮廓是为5[[[272 421]] #编号为0的轮廓的一系列坐标值 [[270 423]]............ [[274 421]]###各轮廓间关系[[[ 1 -1 -1 -1] #轮廓0
[ 4 0 2 -1] #轮廓1
[-1 -1 3 1] #轮廓2
[-1 -1 -1 2] #轮廓3
[-1 1 -1 -1]]] #轮廓4
下面具体解释下hierarchy输出的矩阵参数的意义其输出矩矩阵大小为NXM, 其中N为轮廓的个数,M恒等于4,也就是说每一行的4个数,能够表示出轮廓间的相互关系,那么具体是怎样表示的呢
第一个数:表示同一级轮廓的下个轮廓的编号,如果这一级轮廓没有下一个轮廓,一般是这一级轮廓的最后一个的时候,则为-1
第二个数:表示同一级轮廓的上个轮廓的编号,如果这一级轮廓没有上一个轮廓,一般是这一级轮廓的第一个的时候,则为-1
第三个数:表示该轮廓包含的下一级轮廓的第一个的编号,假如没有,则为-1
第四个数: 表示该轮廓的上一级轮廓的编号,假如没有上一级,则为-1
废话不多说,直接上图,标记处各轮廓间层次关系及编号
具体分析证明:
[[[ 1 -1 -1 -1] #轮廓0 [ 4 0 2 -1] #轮廓1 [-1 -1 3 1] #轮廓2 [-1 -1 -1 2] #轮廓3 [-1 1 -1 -1]]] #轮廓4轮廓0,它的同级下一个的编号为1,第一个参数为1; 因为这一级别的第一个,第二个参数-1;因为不包含子轮廓,所以第三个参数-1;因为处于第一级,其不属于任何别的级别,所以第四个参数为-1轮廓1,它的同级下一个的编号为4,第一个参数为4; 因为这一级别的上一个的编号为0,第二个参数0;因为包含子轮廓,且子轮廓的第一个编号(当然只包含一个,多个也是同样的道理)为2,所以第三个参数2;因为处于第一级,其不属于任何别的级别,所以第四个参数为-1
轮廓2,它是第二级的最后一个(因为只有一个),所以第一个参数为-1; 它也是第二级的第一个,所以第二个参数为-1;因为包含子轮廓,且子轮廓的第一个编号(当然只包含一个,多个也是同样的道理)为3,所以第三个参数3; 因为处于第二级,其属于上一级的轮廓1,所以第四个参数为1
依次类推 。。。。。轮廓3
轮廓4 它是同一级(第一级)的最后一个,因此第一个参数为-1;因为这一级别的上一个的编号为1,第二个参数1;因为不包含子轮廓,所以第三个参数-1;因为处于第一级,其不属于任何别的级别,所以第四个参数为-1
用最通俗的方法,详细大家一定能理解吧! 点击顶哦
- cv2.findContours()返回函数详解, findContours()
- opencv.cv2.findContours()函数
- findContours函数参数详解
- findContours函数参数详解
- findContours函数参数详解
- 25 python-opencv cv2.findcontours函数
- findContours函数
- findcontours()函数
- findcontours
- findContours
- findContours
- [转]opencv轮廓提取(findcontours函数详解)
- OpenCV中的findContours函数参数详解
- findContours函数参数详解及hierarchy 分析
- OpenCV中findContours详解
- findContours函数导致崩溃
- findContours函数参数说明
- Imgproc.findContours函数
- RatingBar
- Effective Modern C++: Item 12 -> 声明覆盖函数override
- tensorflow60 《TensorFlow技术解析与实战》09 Tensorflow在mnist中的应用
- 死锁解决预防实例
- 实时监控文件夹及文件的变化
- cv2.findContours()返回函数详解, findContours()
- css学习笔记-border-image
- 学习自动化测试工具TW小结
- 【Halcon】vs2010与Halcon10.0的配置
- 图论
- 和程序员有些不解之缘
- 解决 IDEA 中src下xml等资源文件无法读取的问题
- 浅谈 white-space, word-wrap, word-break,强制换行的区别
- code[vs] 2235 机票打折