在matplotlib中使用新图像而不使用旧图像?

时间:2019-04-14 18:38:30

标签: python numpy matplotlib image-compression

我是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

1 个答案:

答案 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,以具有单独的图。