findContours函数详细解析

这篇具有很好参考价值的文章主要介绍了findContours函数详细解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1: image, cnts, hierarchy = cv2.findContours(a,b,c)//寻找图形中的轮廓
传入的参数:
	a:传入的图像(二值化图像)
	b:轮廓的检索模式,一般是检测外轮廓cv2.RETR_EXTERNAL
	c:轮廓的近似方法有两种:(近似都是用近似矩形的方法,c不同的取值只是存储近似矩形的方法不同)
		①CV_CHAIN_APPROX_SIMPLE:
		一般是保留轮廓的终点坐标:近似矩形的左上角顶点坐标以及宽和高(x,y,w,h):
		②CV_CHAIN_APPROX_NONE:
		存储所有的轮廓点,相邻的两个点的像素位置差不超过1
函数返回值:
	image:处理过的图像(就是原本的图像,findcontous函数不改变你传入的图像)
	cnts:轮廓的点集列表,下文细说
	hierarchy:轮廓的层次结构,下文细说

cnts解析:
cnts代表的是找到的轮廓的点集的集合,它是一个numpy中的列表结构。你也可以把它理解为一个存储着图像中每个轮廓的数组,就像这样:

a = np.size(cnts) //a就是图像中所有轮廓的数量。

cnts[i] //表示拿出图象中第i个轮廓。至于一个图像中那么多轮廓的索引如何规定,那是计算机的事情

只不过这个数组的每个位置存储的是图片中的一小部分图像(因为画一个轮廓只是画了整个图片的一部分,上文提到,画轮廓是以近似矩形的方式画的,然后cnts“数组”中的每个位置存储的就是这样一个被矩形围起来的图像的坐标)。如:
findContours函数详细解析
(注意,findContours只是找轮廓,不是画轮廓,画轮廓是drawContours函数,只不过draw函数是以find函数为基础进行画的)
这个图片被画出了10个轮廓,那么cnts的存储情况就是这样:
findContours函数详细解析
由图可见,cnts存储了10个“元素”,每个“元素”都是一个轮廓包围的图像的坐标。

hierarchy解析(重要性不如cnts)
hierarchy存储的是轮廓之间的层级关系,hierarchy是一个N*M大小的矩阵,N就是轮廓数量,M固定等于4。如:

[[[ 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

由这段数据可知,这是五个轮廓,每个轮廓都有一个属于自己的层级关系,可以表示为[a,b,c,d]:
a:表示同级轮廓的下个轮廓的编号,如果没用下一个,a=-1

b:表示同级轮廓的上个轮廓的编号,如果没有上一个,b=-1

c:表示该轮廓包含的下一级轮廓的第一个的编号,如果没有,c = -1

d: 表示该轮廓的上一级轮廓的编号,如果没有,d = -1

每个轮廓的编号是计算机分配的(现在个人是这么理解的),分配好之后就可以得出每个轮廓对应的层次矩阵

轮廓0,它的同级下一个的编号为1,第一个参数为1; 因为这一级别的第一个,第二个参数-1;因为不包含子轮廓,所以第三个参数-1;因为处于第一级,其不属于任何别的级别,所以第四个参数为-1

轮廓1,它的同级下一个的编号为4,第一个参数为4; 因为这一级别的上一个的编号为0,第二个参数0;因为包含子轮廓,且子轮廓的第一个编号(当然只包含一个,多个也是同样的道理)为2,所以第三个参数2;因为处于第一级,其不属于任何别的级别,所以第四个参数为-1…之后以此类推

若有错误,欢迎指正文章来源地址https://www.toymoban.com/news/detail-452899.html

到了这里,关于findContours函数详细解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】【OpenCV】关于cv2.findContours()轮廓索引(编号)解析(RETR_TREE)

    在打算自己实现二维码的定位的时候,看到了相关博文的关于cv2.findContours返回的层级信息来定位三个“回”字从而达到定位二维码的目的,但是返回的hierarchy中的层级信息分别对应的是哪个轮廓却困扰了许久,查阅了很多资料最后还是自己手动找出了清晰的规律。 关于hier

    2024年02月04日
    浏览(34)
  • 【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

    对具有黑色背景的二值图像寻找白色区域的轮廓,因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 例如,如下的轮廓检测出的结果contours和hierarchy。 根据轮廓点检测对应轮廓的外接矩形

    2024年02月13日
    浏览(53)
  • C语言《超详细解析内存函数》

    memcpy指的是C使用的内存拷贝函数。 函数原型: (一)、参数: de:指向用于存储内容的目标数组,类型强制转换为void 指针。 sr:指向要复制的数据源,类型强制转换为void 指针 n:要被复制的字节数。 为什么要使用void* ,当传参的时候我们不知道传的是什么类型,而void就像

    2024年02月14日
    浏览(43)
  • 最常用头文件函数大全,最详细解析!!!

    相信我们在写程序的时候一定会遇到很多的函数,面对不同的函数的时候就要遇到不同的头文件。有时候我们往往因为自己忘记或者不知道头文件所对应的函数而感到苦恼,那么这篇文章相信一定可以帮到你。   这个头文件最常用,一般在使用scanf和printf的时候都需要用到否

    2024年02月03日
    浏览(36)
  • 【C++】类的默认成员函数----const成员函数(超详细解析)

    目录 一、前言 二、const成员函数  🍎const修饰类的成员函数  💦问题1  💦问题2 💦针对const成员函数的常考面试题(重点!!) 🍐取地址及const取地址操作符重载 三、共勉    在我们前面学习的 类 中,我们会定义 成员变量 和 成员函数 ,这些我们自己定义的函数都是普

    2024年04月14日
    浏览(40)
  • React Hook - useState函数的详细解析

    在上一篇文章中, 我用到useState来让大家体验一下hooks函数 那么接下来我们来先研究一下上面核心的一段代码代表什么意思 useState来自react,需要从react中导入,是一个hook函数, 官方中也将它成为State Hook, 它与class组件里面的 this.state 提供的功能完全相同; 一般来说,在函数退出

    2024年01月25日
    浏览(40)
  • 【C语言进阶篇】快排函数 qsort 详细解析

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,刚开始学编程的时候我们都是用冒泡来进行排序的,今天给大家介绍一下新的排序方法库函数qsort!    ⛳️ sor英文原意是

    2024年02月14日
    浏览(43)
  • 数据结构之双向带头循环链表函数功能实现与详细解析

    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题       数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.带头双向循环链表函数实现 3.总结         在前面我

    2024年02月05日
    浏览(51)
  • c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))

    上篇文章介绍了一些常用的字符串函数,大家可以跳转过去浏览一下:c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(上))_总之就是非常唔姆的博客-CSDN博客 今天接着来介绍一些:  目录 一.字符串查找 1.strstr() 1.1示例 1.2注意事项: 1.3模拟实现  2.

    2024年02月07日
    浏览(45)
  • C语言--getchar()函数超详细解析(多维度分析,小白一看就懂!!!)

    目录 一、前言 二、什么是getchar()函数 三、getchar()函数的返回类型与机制  四、连续单个字符串 (代码演示)  五、getchar()函数其他用法,实战演练(重点) (1)按照题目写出理想代码,but  出现了不理想的效果  (2)原因分析(原理详解) (3)解决方法  (4)再次练手

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包