计算连通域的质心点,获得种子(connectedComponentsWithStats)
时间: 2023-07-15 10:13:30 浏览: 157
连通域检测算法
3星 · 编辑精心推荐
连通域的质心点可以通过 `connectedComponentsWithStats` 函数获得。该函数会返回每个连通域的信息,包括面积、质心坐标等。
首先,需要对图像进行二值化处理,保留目标区域的像素,将背景像素置为 0。然后可以使用 `connectedComponentsWithStats` 函数来获取连通域的信息。该函数的参数是二值化后的图像,返回值是一个元组,包含以下 5 个元素:
- 标签化的图像,每个像素都被分配了一个整数标签,表示该像素所属的连通域。
- 连通域的数量。
- 每个连通域的面积。
- 每个连通域的外接矩形,包含左上角坐标和宽度、高度。
- 每个连通域的质心坐标。
下面是一个示例代码,演示如何计算连通域的质心点:
```python
import cv2
# 读取图像并进行二值化处理
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)[1]
# 获取连通域信息
output = cv2.connectedComponentsWithStats(thresh, 8, cv2.CV_32S)
(numLabels, labels, stats, centroids) = output
# 遍历每个连通域,打印面积和质心坐标
for i in range(1, numLabels):
print(f"Label: {i}, Area: {stats[i, cv2.CC_STAT_AREA]}, Centroid: ({centroids[i, 0]}, {centroids[i, 1]})")
```
在上述代码中,我们首先读取了一张灰度图像,并对其进行二值化处理。然后使用 `connectedComponentsWithStats` 函数获取连通域信息,并遍历每个连通域,打印其面积和质心坐标。注意,`connectedComponentsWithStats` 函数返回的标签化图像中,背景像素的标签为 0,因此我们从 1 开始遍历每个连通域。
阅读全文