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


用最通俗的方法,详细大家一定能理解吧! 点击


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上司离职了我该怎么办 我上司要辞职我怎么办 一方坚决不同意离婚我该怎么办 模拟农场车翻了怎么办 手机退出键坏了怎么办 dnf邮件发错了怎么办 手机提示sd卡已损坏怎么办 解压包文件数据损坏该怎么办 电脑被压缩后电脑打不开怎么办 眼睛里进了飞虫怎么办 虫子飞到眼睛里怎么办 云电脑pc版双鼠标怎么办 电脑蓝屏代码7f怎么办 笔记本电脑蓝屏开不了机怎么办 装xp系统后蓝屏怎么办 一键ghost断电了怎么办 如何防止cpu降频怎么办 win7 64位系统不兼容怎么办 网页无法加载打印机插件怎么办 微信提示安装了插件怎么办 电脑上不了网怎么办 win10 win10电脑突然没网了怎么办 笔记本玩战争前线发热严重怎么办 玩战争前线总是闪退怎么办 uu加速器卡在29怎么办 新ipad下载不了东西怎么办 福昕pdf阅读器找不到图章怎么办 战地4没达到分数怎么办 植物在太暗环境怎么办 玩绝地求生机型不支持怎么办 安卓安装包损坏怎么办 方舟手游安装包损坏怎么办 7p新机耗电快怎么办 不小心把图片删了怎么办 腿上毛又长又多怎么办 征兵体检体重太轻怎么办 体检发现颈部有淋巴节怎么办? 4岁宝宝汗毛重怎么办 嘴巴张开闭不上怎么办 口张开闭不上怎么办 要去当兵有痔疮怎么办