我是python和matplotlib的新手。我已经实现了k均值算法,以便压缩和成像到聚类,然后绘制改变的图像。我的问题是:我无法在不使用旧图像作为基础的情况下绘制新图像,我尝试了一些但却无法得到我想要的结果。当我无法使用它时,如果我将旧图像作为参数传递,那么编程很糟糕。有人可以帮忙吗?
我试图创建一个新的ndarray但它没有用。
这是我的功能:
def changePic(newPixelList, oldPixel, image_size):
index = 0
new_pixels = []
for pixel in newPixelList:
oldPixel[index] = pixel.classification
index+=1
l = oldPixel.reshape(image_size)
plt.imshow(l)
plt.grid(False)
plt.show()
正如您所看到的,我并没有真正使用oldPixel值,只是它的结构。现在我将向您展示oldPixel的类型:
这是我的loadPic方法,其中X.copy是参数oldPixel:
def loadPic():
"""
Load pic to array
:return: copy of original X, new lisf of pixels, image size
"""
# data preperation (loading, normalizing, reshaping)
path = 'dog.jpeg'
A = imread(path)
A = A.astype(float) / 255.
img_size = A.shape
X = A.reshape(img_size[0] * img_size[1], img_size[2])
listOfPixel= []
for pixel in X:
listOfPixel.append(Pixel(pixel))
return X.copy(), listOfPixel,img_size
试试这个:
def changePic(newPixelList, oldPixel, image_size, picture_num):
index = 0
new_pixels = []
for pixel in newPixelList:
oldPixel[index] = pixel.classification
index+=1
l = oldPixel.reshape(image_size)
plt.figure(picture_num)
plt.imshow(l)
plt.grid(False)
plt.show()
您生成的每个绘图应该具有不同的picture_num
,以便具有单独的绘图。