轮廓检测python
时间: 2023-10-28 09:57:24 浏览: 27
Python中的轮廓检测是通过OpenCV库的cv2.findContours()函数来实现的。这个函数可以用于查找图像中物体的轮廓。
具体的实现步骤如下:
1. 读入灰度化的图像。
2. 对图像进行二值化处理,将图像转换为只有黑白两种颜色的形式。
3. 使用cv2.findContours()函数来寻找图像的轮廓。该函数的输入参数包括二值化图像、轮廓检索模式和轮廓逼近方法。
4. 使用cv2.drawContours()函数将找到的轮廓绘制在原始图像上。该函数的输入参数包括原始图像、轮廓信息、轮廓索引、颜色和线宽。
以下是一个示例代码:
```python
import cv2
def cv_show(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img = cv2.imread("./shape_img.png")
img_gray = cv2.imread("./shape_img.png", cv2.IMREAD_GRAYSCALE)
# 阈值分割
ret, thresh_img = cv2.threshold(img_gray, 200, 255, cv2.THRESH_BINARY)
# 寻找轮廓
contours, hierarchy = cv2.findContours(thresh_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
draw_img = img.copy()
# 绘制轮廓
res = cv2.drawContours(draw_img, contours, -1, (0, 0, 100), 2)
cv_show('res', res)
```
在这个示例中,首先读入了原始图像和灰度化图像。然后对灰度化图像进行阈值分割得到二值化图像。接下来使用cv2.findContours()函数寻找图像的轮廓,并将轮廓绘制在原始图像上。最后通过cv_show()函数展示结果图像。
相关问题:
1. 什么是灰度化图像?为什么要将图像进行灰度化处理?
2. 什么是二值化图像?为什么要将图像进行二值化处理?
3. cv2.findContours()函数的输入参数是什么意思?
4. cv2.drawContours()函数的输入参数是什么意思?
5. OpenCV库中还有哪些常用的图像处理函数?