cv.findContours是怎么用的
时间: 2023-10-24 13:12:37 浏览: 125
Python通过OpenCV的findContours获取轮廓并切割实例
4星 · 用户满意度95%
cv.findContours是OpenCV中用于查找图像中轮廓的函数。其函数原型为:
```
contours, hierarchy = cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
```
其中,参数说明如下:
- image:输入的二值图像,一般为灰度图像或二值化图像,要求为8位单通道图像;
- mode:轮廓检索模式,有4种可选模式,分别为cv.RETR_EXTERNAL、cv.RETR_LIST、cv.RETR_CCOMP和cv.RETR_TREE,具体含义请参考OpenCV官方文档;
- method:轮廓逼近方法,有3种可选方法,分别为cv.CHAIN_APPROX_NONE、cv.CHAIN_APPROX_SIMPLE和cv.CHAIN_APPROX_TC89_L1,具体含义请参考OpenCV官方文档;
- contours:输出的轮廓,是一个Python列表,其中每个元素是一个包含轮廓上所有点的Numpy数组;
- hierarchy:轮廓的层次结构,也是一个Python列表,其中每个元素包含4个值,分别表示后一个轮廓、前一个轮廓、子轮廓和父轮廓的索引。当没有子轮廓或父轮廓时,相应的值为-1;
- offset:可选的偏移量,用于指定轮廓中所有点的偏移量。
例如,可以使用以下代码查找二值图像中的轮廓:
```
import cv2 as cv
# 读取二值图像
img = cv.imread('binary_image.png', 0)
# 查找轮廓
contours, hierarchy = cv.findContours(img, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv.drawContours(img, contours, -1, (0, 0, 255), 2)
# 显示结果
cv.imshow('contours', img)
cv.waitKey(0)
cv.destroyAllWindows()
```
其中,cv.drawContours函数用于绘制轮廓。代码中使用cv.RETR_EXTERNAL模式查找外部轮廓,使用cv.CHAIN_APPROX_SIMPLE方法进行轮廓逼近。最后,可以使用cv.imshow函数显示查找到的轮廓。
阅读全文