python-3.x 我怎样用Pyplot从内存中而不是从文件中读取图像?

jjhzyzn0  于 2023-01-14  发布在  Python
关注(0)|答案(2)|浏览(108)

这段代码是工作,但我想避免使用临时文件,我已经尝试了不同的方式,但没有工作。有人知道如何做到这一点吗?或临时文件是强制性的?

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

...
data = Image.fromarray(np.array(image))
data.save('output/temp.png')
img = plt.imread('output/temp.png')
...

完整功能:

data = pickle.load(datafile)
            # IMAGES
            image = data['img']
            # LABELS
            label = data['label']
            # SHOW
            data = Image.fromarray(np.array(image))
            data.save('output/temp.png')
            img = plt.imread('output/temp.png')

            # Create a figure. Equal aspect so circles look circular
            fig, ax = plt.subplots(1)
            ax.set_aspect('equal')

            # Show the image
            ax.imshow(img)

            # Now, loop through coord arrays, and create a circle at each x,y pair
            for xx, yy in label:
                circle = plt.Circle((xx, yy), 10)
                ax.add_patch(circle)

            # Show the image
            plt.show()

因为我想在一张有numpy的图片上画圆:Drawing circles on image with Matplotlib and NumPy
但我只是想知道如何避免使用临时文件,有可能吗?

wi3ka0sx

wi3ka0sx1#

你问错问题了
我想你的意思是如何显示它,因为你读它是为了把它从文件导入内存,所以你不能从内存中读它,因为它已经在那里了。
为此,您只需要使用plt.imshow(data, *args)

daolsyd0

daolsyd02#

根据Matplotlib's documentation on imread,它的功能类似于Image.open
这意味着您应该已经能够将data而不是img传递到所需的对象中,因为它们都是Image对象。
另外,如果可能的话,你应该解释你想做更多的事情。目前的代码太模糊了,所以这是我能给予的全部。

相关问题