我是python和matplotlib的新手。 我已经实现了k means算法,以便进行压缩和成像 聚类,然后绘制更改的图像。 我的问题是:如果不使用,我将无法绘制新图像 以旧的为基础,我尝试了一些尝试,但未能完全达到我想要的结果。如果我绝对不能使用旧图像作为参数时传递它,那将是不好的编程。 有人可以帮忙吗?
我试图创建一个新的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
答案 0 :(得分:0)
尝试一下:
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
,以具有单独的图。