不用opencv实现机器学习实验中基于聚类的整图分割的python代码
时间: 2024-03-20 15:44:04 浏览: 155
基于sklearn模块的KMeans聚类算法实现“整图分割”【源程序】【Python】
5星 · 资源好评率100%
好的,以下是一个基于聚类的整图分割的Python代码示例,不使用OpenCV库:
```python
import numpy as np
from PIL import Image
from sklearn.cluster import KMeans
# 加载图像
img = Image.open('image.jpg')
# 调整图像大小
scale_percent = 30 # 调整图像大小的百分比
width = int(img.size[0] * scale_percent / 100)
height = int(img.size[1] * scale_percent / 100)
dim = (width, height)
resized_img = img.resize(dim)
# 将图像转换为数组
img_array = np.array(resized_img)
# 对图像进行聚类
kmeans = KMeans(n_clusters=3)
kmeans.fit(img_array.reshape(-1, 3))
labels = kmeans.labels_
cluster_centers = kmeans.cluster_centers_
# 创建空白图像
segmented_img = np.zeros_like(img_array)
# 将每个像素分配到其对应的聚类中心
for i in range(img_array.shape[0]):
for j in range(img_array.shape[1]):
segmented_img[i][j] = cluster_centers[labels[i * img_array.shape[1] + j]]
# 将分割后的图像转换回PIL图像
segmented_img = Image.fromarray(segmented_img.astype('uint8'))
# 显示原始图像和分割后的图像
img.show()
segmented_img.show()
```
这段代码也是基于K-Means算法进行聚类,将每个像素分配到其对应的聚类中心。与之前的代码不同的是,这里使用了Pillow库来加载和处理图像,而不是OpenCV库。最后,将分割后的图像转换回PIL图像,并显示原始图像和分割后的图像。
同样,请注意,这只是一个简单的示例代码,您可以根据需要自己调整和修改。
阅读全文