opencv对图像中的不同目标区域标记上不同的三种颜色
时间: 2024-03-09 07:48:12 浏览: 24
可以使用 OpenCV 中的 `cv2.connectedComponents` 函数对图像进行连通域分析,并为不同的目标区域标记上不同的三种颜色。
以下是一个示例代码,用于对一张二值化图像进行连通域分析,并为不同的目标区域标记上不同的三种颜色:
```python
import cv2
import numpy as np
# 读入二值化图像
img = cv2.imread("binary_image.jpg", cv2.IMREAD_GRAYSCALE)
# 进行连通域分析
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(img, connectivity=8)
# 随机生成颜色
colors = np.random.randint(0, 255, size=(num_labels, 3), dtype=np.uint8)
# 将不同目标区域标记上不同的三种颜色
output = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)
for i in range(1, num_labels):
output[labels == i] = colors[i]
# 将不同目标区域标记上不同的三种颜色
output[labels == 1] = [255, 0, 0] # 红色
output[labels == 2] = [0, 255, 0] # 绿色
output[labels == 3] = [0, 0, 255] # 蓝色
# 显示结果
cv2.imshow("Original Image", img)
cv2.imshow("Connected Components", output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,`cv2.connectedComponentsWithStats()` 函数对二值化图像 `img` 进行连通域分析,并返回连通域的数量、标签、统计信息和质心。然后,随机生成颜色,并将不同的目标区域标记上不同的颜色。最后,通过 `output[labels == 1] = [255, 0, 0]`、`output[labels == 2] = [0, 255, 0]` 和 `output[labels == 3] = [0, 0, 255]` 将不同的目标区域标记上不同的三种颜色。最后通过 `cv2.imshow()` 函数显示结果。