contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)中的contours, hierarchy
时间: 2023-08-31 12:26:15 浏览: 160
FindContours.rar_Findcontours
### 回答1:
`contours` 是一个 Python 列表,其中包含检测到的轮廓。每个轮廓都由一组点表示,并存储为 NumPy 数组。每个点都由其 x 和 y 坐标表示。因此,`contours` 中的每个元素都是一个 NumPy 数组,其中包含轮廓中所有点的坐标。
`hierarchy` 可以用来分层表示轮廓之间的关系。如果两个轮廓重叠,则其中一个轮廓将被认为是父轮廓,另一个轮廓将被认为是子轮廓。`hierarchy` 列表的每个元素都是一个包含四个整数的列表,依次表示父轮廓、子轮廓、下一个兄弟轮廓和前一个兄弟轮廓的索引。如果没有父轮廓、子轮廓、下一个兄弟轮廓或前一个兄弟轮廓,则对应的索引为 -1。
### 回答2:
在OpenCV中,findContours函数用于查找图像中的轮廓。其参数包括输入图像edges、轮廓检索模式RETR_EXTERNAL和轮廓逼近方法CHAIN_APPROX_SIMPLE。该函数将返回两个值,即轮廓集合contours和轮廓的层次结构hierarchy。
contours是一个包含所有轮廓的列表,每个轮廓都是一个由点构成的Numpy数组。每个轮廓数组的形状为(N,1,2),其中N表示轮廓上的点的数量。通过遍历contours列表,可以获取每个轮廓的信息,如面积、周长、边界框和中心等。
hierarchy是一个包含轮廓的层次结构的多维数组,形状为(N,4),其中N是轮廓的数量。每个轮廓在hierarchy中的结构信息以四个整数表示,分别为[Next, Previous, First Child, Parent]。其中Next表示同一层级上的下一个轮廓的索引,Previous表示同一层级上的前一个轮廓的索引,First Child表示第一个子轮廓的索引,Parent表示父轮廓的索引。
通过分析hierarchy数组的值,可以获得轮廓之间的层级关系,如是否是外部轮廓、是否具有子轮廓等。对于没有父轮廓的最外层轮廓,hierarchy数组的对应元素为[-1, -1, -1, -1]。对于没有子轮廓的内部轮廓,hierarchy数组的对应元素为[-1, -1, -1, Parent],其中Parent表示该内部轮廓的父轮廓的索引。
综上所述,通过findContours函数的返回值contours和hierarchy,可以方便地获取图像中的轮廓信息并分析轮廓的层级关系。
### 回答3:
在OpenCV中,函数cv2.findContours()用于从边缘图像中检测并提取轮廓。该函数的参数包括输入边缘图像(edges),轮廓检索模式(cv2.RETR_EXTERNAL)和轮廓近似方法(cv2.CHAIN_APPROX_SIMPLE)。
其中,contours是一个列表,包含了检测到的所有轮廓。每个检测到的轮廓都是一个由点组成的列表,表示该轮廓的形状。
hierarchy是一个包含层级信息的多维数组。每个轮廓的层级信息由四个整数值表示,分别是后一个轮廓的序号、前一个轮廓的序号、子轮廓的序号和父轮廓的序号。它们的含义如下:
1. 后一个轮廓的序号:同一层级下的后一个轮廓编号,如果当前轮廓是最后一个,则被设置为-1。
2. 前一个轮廓的序号:同一层级下的前一个轮廓编号,如果当前轮廓是第一个,则被设置为-1。
3. 子轮廓的序号:当前轮廓的第一个子轮廓的编号,如果当前轮廓没有子轮廓,则被设置为-1。
4. 父轮廓的序号:当前轮廓的父轮廓的编号,如果当前轮廓没有父轮廓,则被设置为-1。
通过contours和hierarchy,可以获取和处理检测到的轮廓信息,如绘制轮廓、计算轮廓的面积和周长等。
阅读全文