我是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
发布于 2019-04-15 02:45:07
试试这个:
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
,以便有不同的绘图。
https://stackoverflow.com/questions/55678724
复制相似问题