python opencv 使用kmeans将不同类别用不同颜色显示
时间: 2023-11-13 13:02:29 浏览: 244
opencv颜色区分的代码
可以使用以下代码将不同类别用不同颜色显示:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 转换颜色空间
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 将图像转换为一维数组
pixel_values = img.reshape((-1, 3))
# 设定聚类数
k = 5
# 进行kmeans聚类
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
_, labels, centers = cv2.kmeans(pixel_values, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)
# 将标签转换为图像形式
segmented_image = centers[labels.flatten()].reshape(img.shape)
# 显示图像
cv2.imshow("Original Image", img)
cv2.imshow("Segmented Image", segmented_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`img` 是要处理的图像,`k` 是聚类数。经过 kmeans 聚类后,每个像素点会被赋予一个标签,然后将标签转换为颜色值,最终得到不同类别用不同颜色表示的图像。
阅读全文