Какой самый быстрый способ масштабирования и отображения изображения в Python? - PullRequest
6 голосов
/ 22 сентября 2008

Мне необходимо отобразить двумерный массив numpy.ar от int16 со скоростью 20 кадров в секунду или около того Использование imshow Matplotlib дросселей на все, что выше 10fps. Очевидно, есть некоторые проблемы с масштабированием и интерполяцией. Я должен добавить, что размеры массива неизвестны, но, вероятно, будут около тридцати на четыреста.

Это данные от датчика, который должен иметь отображение в реальном времени, поэтому данные должны быть повторно взяты на лету.

1 Ответ

6 голосов
/ 22 сентября 2008

Самый быстрый способ отобразить 30x400 точек данных - это:

Использовать цветовые массивы OpenGL

Если вы можете быстро преобразовать ваши данные в то, что OpenGL понимает как массив цветов, вы можете создать массив вершин, описывающий квады, по одному для каждого датчика, затем обновить массив цветов и нарисовать это ортогонально на экране.

Использовать текстуры OpenGL

Если вы можете быстро преобразовать свои точки данных в текстуру opengl, вы можете нарисовать один квад с фиксированными UV-координатами, привязанными к этой текстуре.

Использовать Pygame

Pygame поддерживает преобразование Numpy / Numarray в поверхности, затем Pygame может преобразовывать такие поверхности, что включает повторную выборку, после повторной выборки вы можете перетаскивать ее на экран.

Разное

pyglet делает работу с opengl очень простой

...