如何解决颜色图不随 imshow() 改变
我正在将 KMeans 应用于图像,但是当我尝试使用 cmap
更改颜色时,它没有做任何事情。我怎么办?
im = io.imread("image.jpg") / 255
x,y,z = im.shape
im_2D = im.reshape(x*y,z)
kmeans = KMeans(n_clusters=3,random_state=0)
kmeans.fit(im_2D)
im_clustered = kmeans.cluster_centers_[kmeans.labels_].reshape(x,z)
fig,ax = plt.subplots(1,2)
ax[0].imshow(im)
ax[0].set_title("Original")
ax[1].imshow(im_clustered,cmap="jet")
ax[1].set_title("Segmented using k=3")
plt.show()
编辑:
解决方法
您可以使用 ax[1].imshow(kmeans.labels_.reshape(x,y),cmap='jet')
。
当前 im_clustered
包含 rgb 值。要应用颜色图,您需要标量值。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
from sklearn.cluster import KMeans
with cbook.get_sample_data('ada.png') as image_file:
im = plt.imread(image_file)
x,y,z = im.shape
im_2D = im.reshape(x * y,z)
kmeans = KMeans(n_clusters=3,random_state=0)
kmeans.fit(im_2D)
kmeans.cluster_centers_ = np.clip(kmeans.cluster_centers_,1)
im_clustered = kmeans.cluster_centers_[kmeans.labels_].reshape(x,z)
fig,ax = plt.subplots(1,3,figsize=(10,4))
for ax_i in ax:
ax_i.axis('off')ax[0].imshow(im)
ax[0].set_title("Original")
ax[1].imshow(im_clustered,cmap="jet")
ax[1].set_title("Segmented using k=3")
ax[2].imshow(kmeans.labels_.reshape(x,cmap="jet")
ax[2].set_title("Segmented,k=3,jet cmap")
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。