Qual é a maneira mais rápida de escala e exibir uma imagem em Python?
-
02-07-2019 - |
Pergunta
eu sou obrigado a exibir um numpy.array bidimensional de int16 a 20fps ou assim. Usando bobinas imshow de matplotlib em qualquer coisa acima de 10 fps. Há obviamente alguns problemas com raspagem e interpolação. Devo acrescentar que as dimensões da matriz não são conhecidas, mas provavelmente será em torno de trinta por quatrocentos.
Estes são dados de um sensor que é suposto ter uma visualização em tempo real, de modo que os dados têm que ser re-amostrados em tempo real.
Solução
A maneira mais rápida para exibir 30x400 pontos de dados é:
Use OpenGL matrizes de cores
Se você pode transformar rapidamente seus dados para o OpenGL entende como uma matriz de cor, você pode criar uma matriz de vértice descrevendo quads, um para cada sensor, em seguida, atualizar a matriz de cor e desenhar esse ortograficamente na tela.
Use OpenGL texturas
Se você pode rapidamente transformar os seus pontos de dados para uma textura OpenGL você pode desenhar um quad com coordenadas UV fixos que é obrigado a esta textura.
Use pygame
Pygame tem suporte para conversão de Numpy / Numarray a superfícies, Pygame pode, então, transformar essas superfícies que envolve resampling, depois de reamostragem pode blit-lo na tela.
Misc
pyglet faz lidar com OpenGL muito fácil