当前位置: 首页 > 面试题库 >

逐帧可视化3D-numpy数组

傅嘉悦
2023-03-14
问题内容
# -*- coding: utf-8 -*-
"""
slider 3D numpy array

"""

import numpy
import pylab
from matplotlib.widgets import Slider

data = numpy.random.rand(100,256,256) #3d-array with 100 frames 256x256

ax = pylab.subplot(111)
pylab.subplots_adjust(left=0.25, bottom=0.25)

frame = 0
l = pylab.imshow(data[frame,:,:]) #shows 256x256 image, i.e. 0th frame

axcolor = 'lightgoldenrodyellow'
axframe = pylab.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
sframe = Slider(axframe, 'Frame', 0, 100, valinit=0)

def update(val):
    frame = numpy.around(sframe.val)
    pylab.subplot(111)
    pylab.subplots_adjust(left=0.25, bottom=0.25)
    pylab.imshow(data[frame,:,:])

sframe.on_changed(update)

pylab.show()

我有一个3D-numpy数组,实际上包含大小为256x256的图像。现在,我想使用滑块一个接一个地显示这些帧。它似乎真的很慢。有更好的方法吗?


问题答案:

尝试将更新功能重写为

def update(val):
    frame = numpy.around(sframe.val)
    l.set_data(data[frame,:,:])

这样您就不必在每次更新时都重新创建所有matplotlib对象



 类似资料:
  • 我正在尝试使用ffmpeg逐帧编写视频,如下所述:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ 然而,我总是得到一个OSError:[Errno 22]无效参数。我在Windows7上使用Python 3.4。代码如下: 任何帮助都非常感谢。 编辑:根据此处的要求

  • 问题内容: Numpy的meshgrid对于将两个向量转换为坐标网格非常有用。将其扩展到三个维度的最简单方法是什么?因此,给定三个向量x,y和z,构造可以用作坐标的3x3D数组(而不是2x2D数组)。 问题答案: 这是meshgrid的源代码: 这很容易理解。我将模式扩展到任意数量的维度,但是此代码绝不是经过优化的(也没有经过彻底的错误检查),但是您可以付钱。希望能帮助到你:

  • 数据可视化工具 JS 库: d3 sigmajs **部件 & 组件:</h5> Chart.js C3.js Google Charts chartist-jsj amCharts [$] Highcharts [Non-commercial free to $] FusionCharts [$] ZingChart [free to $] Epoch 服务: Datawrapper infog

  • 在侧边导航栏点击 Visualize 开始视化您的数据。 Visualize 工具能让您通过多种方式浏览您的数据。例如:我们使用饼图这个重要的可视化控件来查看银行账户样本数据中的账户余额。点击屏幕中间的 Create a visualization 蓝色按钮开始。 有很多种可视化控件可供选择。我们点击其中一个名为 Pie 的。 您可以为已保存的搜索建立可视化效果,或者输入新的搜索条件。使用后者时,

  • 问题内容: 创建NumPy数组并将其另存为Django上下文变量后,加载网页时出现以下错误: 这是什么意思? 问题答案: 我定期“ jsonify” np.arrays。尝试首先在数组上使用“ .tolist()”方法,如下所示: 为了“ unjsonify”数组使用:

  • 问题内容: 如何将一个numpy数组行除以该行中所有值的总和? 这是一个例子。但是我很确定有一种花哨且更有效的方法: 结果: 问题答案: 方法1:使用(或)添加额外的维度,以便广播能够正常运行: 方法2:转置快乐: (如果需要,您可以为简洁而删除该部分。) 方法3 :(根据Jaime的评论进行推广) 使用参数on保留尺寸: