首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在matplotlib中不使用旧图像而绘制新图像?

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

Stack Overflow用户
提问于 2019-04-15 02:38:30
回答 1查看 113关注 0票数 0

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

回答 1

Stack Overflow用户

发布于 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,以便有不同的绘图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55678724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档