Python 2.7 使用matplotlib.image从文件夹中读取图像
我试图在一个图中循环显示一个接一个的图像,这意味着在显示图像1后,几秒钟后,图像2将显示在同一个图中。 到目前为止,我有以下代码:Python 2.7 使用matplotlib.image从文件夹中读取图像,python-2.7,opencv,matplotlib,Python 2.7,Opencv,Matplotlib,我试图在一个图中循环显示一个接一个的图像,这意味着在显示图像1后,几秒钟后,图像2将显示在同一个图中。 到目前为止,我有以下代码: import matplotlib.pyplot as plt import matplotlib.image as mpimg %matplotlib inline for i in range(1,4): PATH = "kodim01.png" N = "%02d" % i print PATH.replace("01", N
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline
for i in range(1,4):
PATH = "kodim01.png"
N = "%02d" % i
print PATH.replace("01", N)
image = mpimg.imread(PATH) # images are color images
plt.show()
plt.imshow(image)
但是,它显示一个图像(第一个图像)3次。尽管道路改变了。图像不会改变。请参见以下结果:
如何1)将一个图形中的所有图像依次显示,即将连续图像替换为前一个图像
e、 g.每个图像之间的延迟为1秒。和2)显示所有图像,而不是仅重复一个图像
谢谢更连贯的方法是:
dir()
将所有图像名称获取到一个变量中。例如,images=dir(path)
images将保存路径指向的目录中所有图像的名称for image in images:
cur_img =mpimg.imread(image)
...
plt.imshow(cur_img)
sleep(5) #in seconds
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from time import sleep
%matplotlib inline
for i in range(1,3):
PATH = "kodim01.png"
N = "%02d" % i
print PATH.replace("01", N)
image = mpimg.imread(PATH.replace("01", N))
# plt.show()
plt.imshow(image)
sleep(5) #in seconds
使用%matplotlib内联后端
%matplotlib inline
后端将matplotlib打印显示为png图像。您可以使用IPython.display
来显示图像,在本例中,您可以在一段时间后显示另一个图像
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from IPython import display
import time
%matplotlib inline
PATH = "../data/kodim{0:02d}.png"
for i in range(1,4):
p = PATH.format(i)
#print p
image = mpimg.imread(p) # images are color images
plt.gca().clear()
plt.imshow(image);
display.display(plt.gcf())
display.clear_output(wait=True)
time.sleep(1.0) # wait one second
请注意,在这种情况下,您不会在同一个图形中显示图像,而是将旧图形的图像替换为新图形的图像
使用%matplotlib笔记本
后端
您可以直接使用交互式后端显示绘图。这允许使用matplotlib.animation.FuncAnimation
设置绘图动画
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.animation as animation
%matplotlib notebook
PATH = "../data/kodim{0:02d}.png"
def update(i):
p = PATH.format(i)
#print p
image = mpimg.imread(p) # images are color images
plt.gca().clear()
plt.imshow(image)
ani = animation.FuncAnimation(plt.gcf(), update, range(1,4), interval = 1000, repeat=False)
plt.show()
其中“文件夹”包含扩展名为.png的图像谢谢您的回答。我对python非常陌生。我正在这样做,但我收到了一个错误,你知道为什么吗?试试那个。否则,你可以试试:你能解释一下你所说的^^^是什么意思吗?对不起,我的意思是,试试我上面写的编辑。“^^”应该指向上面的帖子。不幸的是,从问题中不清楚您是希望所有图像一个接一个地显示,还是希望后续图像替换上一个图像。@ImportanceOfBeingErnest我在帖子中讲得很清楚。
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline
images = []
for img_path in glob.glob('folder/*.png'):
images.append(mpimg.imread(img_path))
plt.figure(figsize=(20,10))
columns = 5
for i, image in enumerate(images):
plt.subplot(len(images) / columns + 1, columns, i + 1)
plt.imshow(image)