findContours函数中的hierarchy
时间: 2024-01-27 22:14:23 浏览: 81
findContours函数中的hierarchy参数表示轮廓之间的层级关系。它是一个包含四个整数的列表,每个整数对应一个轮廓。列表中的每个元素都有四个值,分别表示当前轮廓的下一个轮廓、前一个轮廓、父轮廓和子轮廓。
具体来说,hierarchy列表的每个元素包含以下四个值:
- 下一个轮廓:表示当前轮廓的下一个轮廓的索引。如果没有下一个轮廓,则为-1。
- 前一个轮廓:表示当前轮廓的前一个轮廓的索引。如果没有前一个轮廓,则为-1。
- 父轮廓:表示当前轮廓的父轮廓的索引。如果没有父轮廓,则为-1。
- 子轮廓:表示当前轮廓的子轮廓的索引。如果没有子轮廓,则为-1。
这些索引值可以用于在轮廓之间建立层级关系,以便更好地理解和处理轮廓。
范例:<<引用[1]:findContours(image, contours, hierarchy, cv::RETR_CCOMP, cv::CHAIN_APPROX_SIMPLE); [1, -1, -1, -1] [2, 0, -1, -1] [4, 1, 3, -1] [-1, -1, -1, 2] [6, 2, 5, -1] [-1, -1, -1, 4] [7, 4, -1, -1] [-1, 6, -1, -1]。引用:在findContours函数中,其第3个参数hierarchy表示的轮廓之间的层级关系,对于不同mode的轮廓提取算法,其返回的值是不同的。如下图【来自于OpenCV Doc】:。>>
在上述范例中,findContours函数使用了cv::RETR_CCOMP算法,并将轮廓的层级关系存储在hierarchy列表中。每个轮廓的层级关系如下所示:
- 第一个轮廓:下一个轮廓为1,没有前一个轮廓,没有父轮廓,没有子轮廓。
- 第二个轮廓:下一个轮廓为2,前一个轮廓为0,没有父轮廓,没有子轮廓。
- 第三个轮廓:下一个轮廓为4,前一个轮廓为1,父轮廓为3,没有子轮廓。
- 第四个轮廓:没有下一个轮廓,没有前一个轮廓,没有父轮廓,子轮廓为2。
- 第五个轮廓:下一个轮廓为6,前一个轮廓为2,父轮廓为5,没有子轮廓。
- 第六个轮廓:没有下一个轮廓,没有前一个轮廓,没有父轮廓,子轮廓为4。
- 第七个轮廓:下一个轮廓为7,前一个轮廓为4,没有父轮廓,没有子轮廓。
- 第八个轮廓:没有下一个轮廓,前一个轮廓为6,没有父轮廓,没有子轮廓。
这样的层级关系可以帮助我们理解轮廓之间的结构和连接方式。
阅读全文
相关推荐


















