python对一数组像素进行8领域连通域阈值分割并填充颜色
时间: 2024-02-02 22:42:54 浏览: 73
以下是一个示例代码,可以对一数组像素进行8领域连通域阈值分割并填充颜色:
```python
import numpy as np
import cv2
# 读取输入的图像
img = cv2.imread('input.png', 0)
# 设定阈值,将图像二值化
threshold_value = 128
ret, thresh = cv2.threshold(img, threshold_value, 255, cv2.THRESH_BINARY)
# 进行8领域连通域分割
connectivity = 8
output = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)
# 获取连通域的数量
num_labels = output[0]
# 定义随机颜色生成函数
def get_random_color():
return tuple(np.random.randint(0, 255, 3).tolist())
# 填充颜色并显示输出图像
output_img = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)
for i in range(1, num_labels):
color = get_random_color()
output_img[output[1] == i] = color
cv2.imshow('output', output_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先读入输入图像,并设定阈值进行二值化。然后使用 `cv2.connectedComponentsWithStats` 函数进行8领域连通域分割,得到每个连通域的标签和统计信息。最后,我们遍历每个连通域,为其生成一个随机颜色并填充颜色,最终显示输出图像。
阅读全文