opencv查找并绘制轮廓,返回轮廓数及不同轮廓点数。
时间: 2023-07-28 14:07:28 浏览: 57
好的,我可以帮你解答这个问题。
首先,你需要安装 OpenCV 库,并导入相应的模块。然后,你可以使用 `cv2.findContours()` 函数查找图像中的轮廓,该函数会返回一个轮廓列表和层次结构。
下面是一个例子,演示如何查找并绘制轮廓,返回轮廓数和不同轮廓点数:
```python
import cv2
# 读取图像
img = cv2.imread('image.png')
# 转换为灰度图像
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)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)
# 返回轮廓数和不同轮廓点数
print('轮廓数:', len(contours))
for i in range(len(contours)):
print('轮廓', i+1, '的点数:', len(contours[i]))
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
```
在上面的代码中,我们首先读取一张图像,并将其转换为灰度图像。然后,我们使用 `cv2.threshold()` 函数对图像进行二值化处理,这是因为 `cv2.findContours()` 函数只能处理二值图像。接着,我们使用 `cv2.findContours()` 函数查找图像中的轮廓,其中 `cv2.RETR_TREE` 表示获取轮廓的整个层次结构,`cv2.CHAIN_APPROX_SIMPLE` 表示压缩水平、垂直和对角方向的像素,从而仅保留端点。
然后,我们使用 `cv2.drawContours()` 函数将轮廓绘制到原始图像上,其中 `-1` 表示绘制所有轮廓,`(0, 255, 0)` 表示轮廓的颜色,`3` 表示轮廓的线宽。
最后,我们返回轮廓数和不同轮廓点数,并在屏幕上显示图像。
希望这个例子能够帮助到你。
相关推荐
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)