Image hierarchy
时间: 2024-09-26 16:10:56 浏览: 36
Image Hierarchie-开源
图像层次(Image Hierarchy)在OpenCV(如`cv2.findContours()`函数所使用的)中,是指通过轮廓检测得到的每个轮廓及其之间的关系。当你调用`findContours()`函数时,第三个参数`hierarchy`是一个用于存储轮廓之间父子关系的结构,它是一个`vector<Vec4i>`类型的数组。
`Vec4i`实际上是一个包含四个整数的向量,这些整数表示:
1. 被当前轮廓包围的子轮廓索引(如果有的话)
2. 当前轮廓的下一个兄弟轮廓的索引(如果没有,则为-1)
3. 父轮廓的索引(如果当前轮廓属于其他轮廓的一部分,那么这是父轮廓的索引;否则为-1)
4. 是否是最后一个轮廓(如果是最后一个轮廓,则这个值为-1)
因此,`hierarchy`可以帮助分析图像中的复杂形状,比如识别哪些轮廓是彼此嵌套的,或者确定哪些部分构成了更大的物体。你可以通过遍历这个结构来进一步理解图像中不同轮廓之间的关联。例如:
```python
contours, hierarchy = cv2.findContours(image, mode, method)
for i, contour in enumerate(contours):
parent_id, child_ids = hierarchy[i][3], hierarchy[i][0]
if parent_id != -1:
print(f"Contour {i} is a child of contour {parent_id}")
if len(child_ids) > 0:
print(f"Contour {i} has children: {child_ids}")
```
这将展示每个轮廓与其父轮廓的关系,以及如果有子轮廓的话它们是什么。[^1]
阅读全文