利用python语言,使用opencv中的findContours函数
时间: 2023-12-20 07:25:26 浏览: 82
实现对图像中所有轮廓的查找。
首先,需要导入opencv库和numpy库:
```python
import cv2
import numpy as np
```
然后,读取一张图像并将其转换为灰度图像:
```python
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
接着,使用Canny边缘检测算法进行边缘检测:
```python
edges = cv2.Canny(gray, 100, 200)
```
然后,使用findContours函数查找所有轮廓:
```python
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
其中,第一个参数是输入的边缘图像,第二个参数是轮廓检索模式,第三个参数是轮廓逼近方法。
最后,可以将所有轮廓在原图像上绘制出来:
```python
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
cv2.imshow('Contours', img)
cv2.waitKey(0)
```
其中,第一个参数是绘图的目标图像,第二个参数是轮廓列表,第三个参数是要绘制的轮廓索引(-1表示绘制所有轮廓),第四个参数是绘制的颜色,第五个参数是线宽。
完整代码如下:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
cv2.imshow('Contours', img)
cv2.waitKey(0)
```
阅读全文