这段代码是工作,但我想避免使用临时文件,我已经尝试了不同的方式,但没有工作。有人知道如何做到这一点吗?或临时文件是强制性的?
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
但我只是想知道如何避免使用临时文件,有可能吗?
2条答案
按热度按时间wi3ka0sx1#
你问错问题了
我想你的意思是如何显示它,因为你读它是为了把它从文件导入内存,所以你不能从内存中读它,因为它已经在那里了。
为此,您只需要使用
plt.imshow(data, *args)
daolsyd02#
根据Matplotlib's documentation on imread,它的功能类似于
Image.open
。这意味着您应该已经能够将
data
而不是img
传递到所需的对象中,因为它们都是Image对象。另外,如果可能的话,你应该解释你想做更多的事情。目前的代码太模糊了,所以这是我能给予的全部。