find_contours
时间: 2023-08-22 13:14:12 浏览: 110
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` 参数了。
File "D:\Programming\envs\env_pytorch\Lib\site-packages\skimage\measure\_find_contours.py", line 128, in find_contours raise ValueError('Parameters "fully_connected" must be either ' ValueError: Parameters "fully_connected" must be either "high" or "low".
根据错误提示,`ValueError: Parameters "fully_connected" must be either "high" or "low"`,意味着在 `measure.find_contours` 函数中,`fully_connected` 参数只能设置为字符串 `"high"` 或 `"low"`。这是因为 `fully_connected` 参数在 `skimage` 1.0 版本中发生了变化,只能接受字符串参数 `"high"` 或 `"low"`,表示使用不同的连接方式。
例如,要使用 `"high"` 连接方式,可以这样调用 `measure.find_contours` 函数:
``` python
import numpy as np
from skimage import measure
# 创建一个 10 x 10 的二维矩阵
image = np.zeros((10, 10))
# 在矩阵上绘制一个三角形
image[2:8, 2:8] = np.tri(6, 6)
# 查找轮廓
contours = measure.find_contours(image, 0.5, fully_connected="high")
# 输出轮廓数量
print(len(contours)) # 2
```
注意,在 `skimage` 1.0 版本之前,`fully_connected` 参数可以设置为布尔值 `True` 或 `False`,表示使用 4-连接或 8-连接。如果你使用的是旧版本的 `skimage`,可以将 `fully_connected` 设置为布尔值。但是,建议使用最新版本的 `skimage` 并使用字符串 `"high"` 或 `"low"` 来设置 `fully_connected` 参数。
阅读全文