相关疑难解决方法(0)

从python生成电影而不将单个帧保存到文件

我想从我在matplotlib的python脚本中生成的帧创建一个h264或divx电影.这部电影大约有10万帧.

在网络上的例子中[例如 1],我只看到了将每个帧保存为png然后在这些文件上运行mencoder或ffmpeg的方法.就我而言,保存每一帧是不切实际的.有没有办法从matplotlib生成一个图并将其直接传递给ffmpeg,不生成中间文件?

用ffmpeg的C-api编程对我来说太难了[例如.2].此外,我需要一个具有良好压缩的编码,例如x264,因为电影文件对于后续步骤来说太大了.所以坚持使用mencoder/ffmpeg/x264会很棒.

有什么东西可以通过管道来完成[3]?

[1] http://matplotlib.sourceforge.net/examples/animation/movie_demo.html

[2] 如何使用x264 C API将一系列图像编码为H264?

[3] http://www.ffmpeg.org/ffmpeg-doc.html#SEC41

python ffmpeg numpy matplotlib x264

69
推荐指数
5
解决办法
5万
查看次数

Matplotlib:将绘图保存为numpy数组

在Python和Matplotlib中,很容易将绘图显示为弹出窗口或将绘图保存为PNG文件.我怎样才能将绘图保存为RGB格式的numpy数组?

python numpy matplotlib

31
推荐指数
6
解决办法
3万
查看次数

如何将 Matplotlib 图转换为 PIL Image 对象(不保存图像)

正如标题所述,我正在尝试将 a 转换fig为 a PIL.Image。我目前可以通过首先将fig文件保存到磁盘然后使用打开该文件来做到这一点,Image.open()但该过程花费的时间比预期的要长,我希望通过跳过本地保存步骤会快一点。

这是我到目前为止所拥有的:

# build fig
figsize, dpi = self._calc_fig_size_res(img_height)
fig = plt.Figure(figsize=figsize)
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
ax.imshow(torch.from_numpy(S).flip(0), cmap = cmap)
fig.subplots_adjust(left = 0, right = 1, bottom = 0, top = 1)
ax.axis('tight'); ax.axis('off')

# export
fig.savefig(export_path, dpi = dpi)

# open image as PIL object
img = Image.open(export_path)
Run Code Online (Sandbox Code Playgroud)

我在构建无花果之后尝试这样做(它会在导出阶段之前):

pil_img = Image.frombytes('RGB', canvas.get_width_height(), canvas.tostring_rgb())
Run Code Online (Sandbox Code Playgroud)

但它没有显示整个图像。它看起来像是左上角的一部分,但它可能只是数据的一种奇怪表示——我正在使用频谱图,因此图像相当抽象。

python numpy matplotlib python-imaging-library python-3.x

15
推荐指数
2
解决办法
1万
查看次数