python opencv 挖出图像二值化后连通区域
时间: 2023-07-08 12:05:29 浏览: 133
查找二值图像最大连通区域
4星 · 用户满意度95%
要实现挖出图像二值化后的连通区域,可以使用 OpenCV 库中的 cv2.connectedComponentsWithStats 函数。该函数可以对二值化后的图像进行连通区域分析,返回每个连通区域的相关信息,包括区域面积、外接矩形等。
以下是一个简单的示例代码,演示如何使用 cv2.connectedComponentsWithStats 函数:
```python
import cv2
# 读取图像
img = cv2.imread('test.png')
# 将图像转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对灰度图进行二值化处理
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 进行连通区域分析
output, labels, stats, centroids = cv2.connectedComponentsWithStats(binary, connectivity=8, ltype=cv2.CV_32S)
# 绘制连通区域外接矩形
for i in range(1, output):
x, y, w, h, area = stats[i]
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,首先读取图像并将其转为灰度图。然后对灰度图进行二值化处理,得到二值化图像。接下来调用 cv2.connectedComponentsWithStats 函数进行连通区域分析,返回每个连通区域的相关信息。最后遍历每个连通区域并绘制外接矩形,将结果显示出来。
需要注意的是,cv2.connectedComponentsWithStats 函数的第一个返回值是连通区域数目,因此在遍历连通区域时需要从 1 开始循环。
阅读全文