3

我正在使用 python 的 pil 库来显示图像。现在我有一系列帧显示为视频内容。我有一个np.array包含所有帧的 RGB 值。找不到类似于 Mathlabs 的方法implay来显示这些帧。我可以imshow循环使用,但这会很慢,因为我需要提到帧率。

4

3 回答 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 回答