在Python中缩放和显示图像的最快方法是什么?

6 投票
1 回答
2330 浏览
提问于 2025-04-11 09:19

我需要以大约每秒20帧的速度显示一个二维的numpy.array,里面存的是int16类型的数据。使用Matplotlib的imshow功能在超过每秒10帧时就会卡住。显然,这里有一些关于缩放和插值的问题。我还要补充一下,这个数组的具体尺寸我并不知道,但大概会在30行和400列左右。

这些数据来自一个传感器,应该能够实时显示,所以数据必须在运行时进行重新采样。

1 个回答

6

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

使用OpenGL颜色数组

如果你能快速把数据转换成OpenGL能理解的颜色数组,你可以创建一个顶点数组,描述每个传感器的四边形,然后更新你的颜色数组,并在屏幕上以正交方式绘制出来。

使用OpenGL纹理

如果你能快速把数据点转换成OpenGL纹理,你可以绘制一个固定UV坐标的四边形,并将这个纹理绑定到它上面。

使用pygame

Pygame支持将Numpy/Numarray转换为表面,然后Pygame可以对这些表面进行变换,这个过程涉及重新采样,重新采样后你可以把它显示在屏幕上。

其他

pyglet 让处理OpenGL变得非常简单。

撰写回答