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

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

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

1 ответов


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

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

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

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

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

использовать pygame

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

- разное

pyglet делает дело с OpenGL очень легко