【问题标题】:What is the fastest way to scale and display an image in Python?在 Python 中缩放和显示图像的最快方法是什么?
【发布时间】:2010-09-11 23:47:33
【问题描述】:

我需要以 20fps 左右的速度显示 int16 的二维 numpy.array。使用 Matplotlib 的 imshow 阻塞任何高于 10fps 的内容。缩放和插值显然存在一些问题。我应该补充一点,数组的尺寸是未知的,但可能是 30 乘 400 左右。

这些是来自应该具有实时显示的传感器的数据,因此必须动态重新采样数据。

【问题讨论】:

    标签: python animation matplotlib image-scaling


    【解决方案1】:

    显示 30x400 数据点的最快方法是:

    使用 OpenGL 颜色数组

    如果您可以快速将数据转换为 OpenGL 所理解的颜色数组,您可以创建一个描述四边形的顶点数组,每个传感器一个,然后更新您的颜色数组并在屏幕上正交绘制。

    使用 OpenGL 纹理

    如果您可以快速将数据点转换为 opengl 纹理,则可以绘制一个绑定到此纹理的具有固定 UV 坐标的四边形。

    使用 pygame

    Pygame 支持将 Numpy/Numarray 转换为表面,然后 Pygame 可以转换涉及重新采样的表面,重新采样后您可以在屏幕上对其进行 blit。

    杂项

    pyglet 让处理 opengl 变得非常简单

    【讨论】:

    • 谢谢,但数据需要重新采样,因为这是传感器数据的实时显示。
    • 所以我做对了。你有一个 10x10 传感器点的输入。你想把它放大到大屏幕上显示吗?
    • 所以问题不在于如何重新采样。这是如何快速创建 30x400 数据点的大型显示。
    • 嗯,图像需要缩放到或多或少的平方,但我想 OpenGL 可以解决这个问题。
    • 是的,您可以为 opengl 选择正交显示。
    猜你喜欢
    • 2015-07-25
    • 2010-10-23
    • 1970-01-01
    • 2015-06-15
    • 2012-09-07
    • 1970-01-01
    • 2011-01-24
    • 2018-10-13
    • 2015-12-10
    相关资源
    最近更新 更多