我正在使用 python 的 pil 库来显示图像。现在我有一系列帧显示为视频内容。我有一个np.array
包含所有帧的 RGB 值。找不到类似于 Mathlabs 的方法implay
来显示这些帧。我可以imshow
循环使用,但这会很慢,因为我需要提到帧率。
问问题
5295 次
3 回答
3
Matplotlib 动画效果很好,并且易于使用。对于合理尺寸的图像,它们通常以 30fps 或大约 30fps 运行。Matplotlib 1.1+ 有一个不错的新动画界面:这里有一些示例和教程。
旧版本的 matplotlib 动画也不难(您基本上只是直接设置数据并刷新绘图),但动画更多地依赖于后端,因此您需要寻找合适的示例。
对于一个具体的例子,如果images
是你想要动画的 matplotlib 图像列表,你可以简单地做:
animation.ArtistAnimation(fig, images, interval=50, blit=True, repeat_delay=1000)
顺便说一句,如果您还想查看生成测试图像的代码,则取自此示例。动画代码就是上面的那一行。
于 2013-04-17T04:21:12.297 回答
1
我已经实现了一个方便的脚本,正好适合您的需要。在这里试试
显示目录中图像列表的示例将是
import os
import glob
from scipy.misc import imread
img_dir = 'YOUR-IMAGE-DIRECTORY'
img_files = glob.glob(os.path.join(video_dir, '*.jpg'))
def redraw_fn(f, axes):
img_file = img_files[f]
img = imread(img_file)
if not redraw_fn.initialized:
redraw_fn.im = axes.imshow(img, animated=True)
redraw_fn.initialized = True
else:
redraw_fn.im.set_array(img)
redraw_fn.initialized = False
videofig(len(img_files), redraw_fn, play_fps=30)
于 2017-05-10T06:31:04.233 回答
0
于 2013-04-17T01:37:36.630 回答