在不使用matplotlib中的旧图像的情况下绘制新图像?

问题描述 投票:0回答:1

我是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
python numpy matplotlib image-compression
1个回答
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,以便具有单独的绘图。

© www.soinside.com 2019 - 2024. All rights reserved.