Каков самый быстрый способ масштабирования и отображения изображения в Python?

StackOverflow https://stackoverflow.com/questions/114597

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Используйте текстуры OpenGL.

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

Используйте pygame

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

Разное

пиглет делает работу с OpenGL очень простой

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top