findContours
时间: 2023-07-18 19:34:05 浏览: 42
`findContours()` 函数是 OpenCV 库中用于在图像中寻找轮廓的函数,可以将图像中的轮廓提取出来,并存储为一个列表。在寻找轮廓时,需要先对图像进行二值化处理,然后指定寻找轮廓的方法、轮廓近似方法等参数,例如:
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
其中,`'image.jpg'` 是要读取的图像文件路径,`cv2.cvtColor()` 函数用于将彩色图像转换为灰度图像,`cv2.threshold()` 函数用于对灰度图像进行二值化处理。`findContours()` 函数的第一个参数是二值化后的图像,第二个参数是轮廓检索模式,第三个参数是轮廓近似方法。函数返回两个值,第一个是轮廓列表,第二个是轮廓的层次结构。
相关问题
FindContours
引用: findContours方法用于检测图像中的轮廓。它的参数包括输入图像(通常为二值图像),轮廓检测模式,轮廓近似方法,可选的contours和hierarchy输出参数,以及可选的偏移量offset。轮廓检测模式决定了要检测的轮廓类型,如只检测最外层轮廓或检测所有轮廓。轮廓近似方法决定了轮廓的表示精度。
如果要求只检测最外层轮廓,可以将轮廓检测模式参数设置为cv2.RETR_EXTERNAL。这样,findContours方法将只返回最外层的轮廓。
关于contours里的数据结构,它是一个包含所有检测到的轮廓的列表。每个轮廓都是一个包含点坐标的numpy数组。
引用: OpenCV中的findContours函数确实非常方便,通过简单的几个步骤就可以检测出图像中的物体轮廓。这个函数可以帮助我们在图像处理和计算机视觉应用中实现轮廓检测的功能。
引用: 轮廓检测函数cv2.findContours()的具体用法是cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])。其中,image是要进行轮廓检测的输入图像,mode是轮廓检测模式,method是轮廓近似方法,contours是输出的轮廓列表,hierarchy是可选的轮廓层级信息,offset是可选的偏移量。
总结来说,findContours方法是OpenCV中用于检测图像轮廓的函数。通过设置不同的参数,可以实现不同的轮廓检测效果,包括只检测最外层轮廓。contours列表包含了检测到的轮廓的数据结构,每个轮廓是一个包含点坐标的numpy数组。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [OpenCV中的findContours函数参数详解](https://blog.csdn.net/laobai1015/article/details/76400725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [cv2.findContours()轮廓检测](https://blog.csdn.net/wuguangbin1230/article/details/122619717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
findcontours
findContours是OpenCV中的一个函数,用于在二值图像中查找轮廓。该函数会生成一组点集来表示对象的轮廓,可以用于计算对象的面积、周长、质心等特征。使用该函数需要先将原始图像转化为二值图像,例如通过阈值分割或边缘检测等方法。函数原型如下:
```
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())
```
参数说明:
- image:输入的二值图像。
- contours:输出的轮廓点集,以向量形式存储。
- hierarchy:可选的输出向量,包含轮廓的层级信息。
- mode:轮廓检索模式。可选值为RETR_EXTERNAL(仅检索最外层轮廓)、RETR_LIST(检索所有轮廓,不考虑层级关系)等。
- method:轮廓近似方法。可选值为CHAIN_APPROX_NONE(保存所有轮廓点)、CHAIN_APPROX_SIMPLE(仅保存轮廓端点)等。
- offset:轮廓点集的偏移量。
使用示例:
```python
import cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
该示例中,我们读入一张图片并将其转化为灰度图像,然后使用OTSU自适应阈值算法对其进行二值化处理。最后,使用findContours函数查找轮廓并保存到contours变量中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)