介绍cv2.findContours
时间: 2023-07-02 09:20:31 浏览: 79
`cv2.findContours` 是 OpenCV 中用于查找图像轮廓的函数,它可以在二值化图像中查找所有的连通轮廓,返回轮廓的点集和层次结构信息。 `cv2.findContours` 的输入参数包括:
- `image`:需要查找轮廓的二值化图像,通常为灰度图像或者二值图像。
- `mode`:轮廓查找模式,可以为 `cv2.RETR_EXTERNAL`(只检测外轮廓)、`cv2.RETR_LIST`(检测所有轮廓,不建立层次关系)等。
- `method`:轮廓逼近方法,可以为 `cv2.CHAIN_APPROX_NONE`(保存所有轮廓点)、`cv2.CHAIN_APPROX_SIMPLE`(压缩水平、垂直、对角线方向的点,仅保留端点)等。
`cv2.findContours` 的输出结果是一个三元组 `(contours, hierarchy, ret)`,其中:
- `contours`:表示检测到的轮廓的点集,是一个列表,每个元素都是一个 Numpy 数组,表示一个轮廓。
- `hierarchy`:表示轮廓的层次结构,是一个 Numpy 数组,每行的四个元素表示当前轮廓的后一个轮廓、前一个轮廓、第一个子轮廓和父轮廓。
- `ret`:表示是否成功检测到轮廓的标志,如果成功则为 True,否则为 False。
可以使用 `cv2.drawContours` 函数在图像上绘制检测到的轮廓,也可以使用 `cv2.boundingRect` 函数计算轮廓的边界矩形或者最小包围矩形等形状信息。
相关问题
C# Cv2.FindContours
Cv2.FindContours是C#中OpenCV库的一个函数,用于在图像中查找轮廓。它可以帮助我们检测和提取出图像中的边界。
该函数的语法如下:
```
Cv2.FindContours(Mat image, RetrievalModes retrievalMode, ContourApproximationModes contourApproximationMode)
```
其中,参数说明如下:
- `image`:输入的二值化图像,通常为灰度图像或二值图像。
- `retrievalMode`:轮廓检索模式,指定轮廓的检索方式,有四种模式可选。
- `contourApproximationMode`:轮廓逼近方法,指定轮廓的逼近方式,有三种方法可选。
函数的返回值是一个包含所有轮廓的列表,每个轮廓都是一个点的集合。
cv2.findContours执行顺序
cv2.findContours函数的执行顺序是先转换图像为灰度图,然后进行二值化处理,接着找到图像中的轮廓,最后绘制轮廓。具体来说,首先,通过cv2.cvtColor函数将图像转换为灰度图,然后使用cv2.threshold函数对灰度图进行二值化处理,将图像中的目标物体与背景分离出来。接下来,使用cv2.findContours函数找到二值化图像中的轮廓,该函数返回轮廓的列表。最后,通过cv2.drawContours函数将找到的轮廓绘制在原始图像上。
阅读全文