findContours返回值
时间: 2024-07-31 14:01:53 浏览: 103
OpenCV的`findContours()`函数主要用于在给定的图像中寻找轮廓。这个函数有两个返回值:轮廓集和轮廓存储器级别的指针。以下是这两个值的详细解释:
1. **轮廓集(vector<Mat> contours)**:这是最重要的返回值,它是一个`std::vector<cv::Mat>`类型的容器,其中包含了所有找到的轮廓信息。每个轮廓都作为一个矩阵存储,矩阵的第一行包含的是轮廓的顶点坐标,通常是按照顺序排列的,第二行则表示对应顶点的近似圆环大小(对于多边形而言,如果没有指定这个选项,通常为空)。
2. **轮廓存储器级别指针(std::vector<std::vector<Point>> hierarchy)**:这个额外的返回值通常不是必需的,但在某些场景下可能会有用。它是另一个嵌套的`std::vector<cv::Point>`,记录了轮廓之间的相对层次关系,包括“内部轮廓”、“外部轮廓”以及可能存在的“洞”。每一级的`cv::Point`包含两个元素:水平距离和垂直距离,可以用来判断轮廓之间的连接关系。
如果你只是想获取轮廓本身,那么轮廓集`contours`就是你需要的主要数据;而如果想要了解轮廓间的关联结构,则需要同时分析`hierarchy`。
相关问题
cv2.findcontours返回值
### 回答1:
`cv2.findContours()` 函数返回值是三个参数:
1. contours:图像轮廓的列表,其中每个轮廓是一个 Numpy 数组,包含该轮廓上的所有点的坐标。
2. hierarchy:图像中各轮廓的层次关系的信息,表示轮廓的父轮廓、子轮廓和兄弟轮廓的编号。
3. _:是一个可选参数,用于表示轮廓检索模式,默认值为 cv2.RETR_LIST,表示检索所有轮廓,不建立任何层次关系。
### 回答2:
cv2.findContours()是OpenCV中的一个函数,用于在二进制图像中找到物体的轮廓。它的返回值是一个包含轮廓点坐标的列表,以及一个包含每个轮廓的层次结构的数组。
返回值中的第一个参数是轮廓列表,每个轮廓都表示为一系列点的坐标。这些点按照顺序连接,形成了轮廓的边界。每个轮廓在列表中是一个数组,其中每个元素表示一个点的坐标,并可通过索引访问。
返回值的第二个参数是层次结构,以一个N x 4的数组形式表示。每行包含一个轮廓的信息,包括下一个轮廓、前一个轮廓、第一个子轮廓和父轮廓。这些信息可以用于分析轮廓之间的关系,如判断是否为内部或外部轮廓、获取父子轮廓等。
通过返回值中的轮廓列表,我们可以进一步将轮廓用于各种图像处理任务,如图像分割、形状分析等。可以使用轮廓的坐标进行各种计算,比如计算轮廓的面积、周长、中心点等。
总之,cv2.findContours()的返回值可以帮助我们找到图像中的物体轮廓,并提取所需的信息,为后续的图像处理任务提供了有价值的数据。
cv2.findContours返回值
cv2.findContours函数返回三个值:contours、hierarchy、image。其中,contours是一个列表,包含了所有检测到的轮廓,每个轮廓是一个由点组成的numpy数组;hierarchy是每个轮廓的层次结构,包含了每个轮廓的父子关系信息;image是输入的二值化图像。如果没有找到任何轮廓,那么contours将会是一个空列表,hierarchy将会是一个空数组,image将会是输入的二值化图像。