find_contours()
时间: 2023-10-08 21:06:42 浏览: 133
find_contours()是一个在图像上发现轮廓的函数。它的参数包括输入图像、输出轮廓、轮廓的层次结构、轮廓返回的模式、发现方法和轮廓像素的位移。函数的作用是在二值图像上找到所有的轮廓,并将每个轮廓以点向量的形式存储在输出轮廓对象中。轮廓的层次结构包含了每个轮廓的后一个轮廓、前一个轮廓、父轮廓和内嵌轮廓的索引。如果没有对应的项,则相应的层次结构设置为负数。[1][2][3]
相关问题
find_contours
findContours函数是OpenCV中的一个函数,用于在图像中查找轮廓。它的调用方式如下所示:findContours(image, contours, hierarchy, mode, method)。其中,image是输入的二值图像,contours是用于存储轮廓的数组,hierarchy是用于存储轮廓的层级关系的数组,mode是轮廓检索模式,method是轮廓近似方法。[1]
在调用findContours函数时,可以通过设置mode参数来筛选出内轮廓。例如,使用CV_RETR_CCOMP模式可以检测双层轮廓,并将内轮廓筛选出来。[1][2]
在程序中,可以使用vector<Vec4i> hierarchy来过滤内外轮廓,vector<vector<Point>> contours来存储轮廓的数组,或者使用vector<Mat> contours来存储轮廓的数组。[2]
有时候在使用findContours函数时可能会遇到一些问题。例如,如果使用vector<vector<Point>> contours作为参数,可能会出现Assertion failed的错误。这是因为标准库中的std::vector和Point与findContours函数中使用的vector和Point不是同一类型,解决方法是使用cv::vector和cv::Point来声明。[3]
总结来说,findContours函数是用于在图像中查找轮廓的函数,可以通过设置参数来筛选出内轮廓,并且在使用时需要注意参数的类型匹配问题。
boundaries = measure.find_contours(BO_skel, 0.5, 'high', fully_connected='low', positive_orientation='low'), TypeError: find_contours() got multiple values for argument 'fully_connected'
这个错误通常是因为您在函数调用中多次指定了同一个参数。在这个例子中,您指定了两次参数 `fully_connected`。
您可以尝试使用以下代码来解决这个问题:
```
boundaries = measure.find_contours(BO_skel, 0.5, mode='high', fully_connected='low', orientation='low')
```
在这个例子中,我将 `positive_orientation` 参数改为 `orientation` 参数,并将其放在了 `mode` 参数之后,这样就不会再次指定 `fully_connected` 参数了。
阅读全文
相关推荐














