图像聚类:读入图像数据,通过k-means对其像素RGB值聚类,并随机着色可视化输出聚类结果的完整代码
时间: 2024-05-08 16:22:06 浏览: 93
以下是一个简单的图像聚类的完整代码,实现了读取图像数据、使用k-means算法对像素RGB值进行聚类,并随机着色可视化输出聚类结果。
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from PIL import Image
# 读取图像数据
img = Image.open('test.jpg')
img_data = np.array(img) / 255.0
plt.imshow(img_data)
plt.show()
# 将图像数据转换为二维数组
rows, cols, channels = img_data.shape
data = img_data.reshape(rows * cols, channels)
# 使用k-means算法对像素RGB值进行聚类
kmeans = KMeans(n_clusters=8, random_state=0).fit(data)
labels = kmeans.labels_
centers = kmeans.cluster_centers_
# 随机着色可视化输出聚类结果
output_img_data = np.zeros_like(data)
for i in range(len(labels)):
output_img_data[i, :] = centers[labels[i]]
output_img_data = output_img_data.reshape(rows, cols, channels)
plt.imshow(output_img_data)
plt.show()
```
这段代码中,我们首先使用PIL库读取图像数据,并将其转换为numpy数组。然后,我们将图像数据转换为二维数组,并使用sklearn库中的KMeans类对像素RGB值进行聚类。最后,我们将聚类结果随机着色并可视化输出。
阅读全文