Python中labels, stats, centroids = cv2.connectedComponentsWithStats(img)的详细用法
时间: 2024-09-10 08:08:17 浏览: 67
是一个成熟的版本-使用python-opencv消除图像中孤立的小区域操作
在Python的OpenCV(cv2)库中,`connectedComponentsWithStats`函数是一个用于图像处理的功能,它主要用于检测并统计连续区域(contiguous components)。这个函数会将输入图像分割成独立的区域,并返回每个区域的标签(labels)、大小、位置等信息。
当你调用`labels, stats, centroids = cv2.connectedComponentsWithStats(img)`时,参数解释如下:
1. `img`: 这是你需要分析的灰度或二值图像(通常是numpy数组),通常表示为8位或32位无符号整数。
```python
img = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)
```
2. `labels`: 返回的是一个uint8类型的二维数组,每个元素代表原图中的一个连通组件,值从0开始编号。
3. `stats`: 这是一个结构化的数组,包含每个连通区域的信息。每一行对应于`labels`数组的一个元素,列包括:
- label:该区域的标签ID。
- area:区域的像素总数。
- x,y,width,height:构成该区域的矩形左上角坐标以及宽度和高度。
4. `centroids`: 如果第三个输出参数被包含(例如上面的例子),它将是一个同样大小的uint8数组,包含了每个区域的中心点(x, y)坐标。如果没有提供此参数,它将不会被计算和返回。
使用这个函数的一般步骤如下:
```python
# 加载图片并转换为二值化
binary_img = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)[1]
# 找到连接的组件及其统计信息
labels, stats, _ = cv2.connectedComponentsWithStats(binary_img)
# 然后你可以遍历stats,对每个区域做进一步的处理
for i in range(1, len(stats)):
# 根据label处理每个区域
```
阅读全文