Was ist der schnellste Weg, um ein Bild in Python zu skalieren und zeigen?
-
02-07-2019 - |
Frage
Ich bin verpflichtet, bei 20fps oder so eine zweidimensionale numpy.array von int16 anzuzeigen. Matplotlib der imshow Mit Drosseln auf etwas über 10 fps. Es gibt natürlich einige Probleme mit Skalierung und Interpolation. Ich sollte hinzufügen, dass die Dimensionen des Arrays nicht bekannt sind, wird aber wahrscheinlich etwa dreißig bis vierhundert sein.
Es handelt sich um Daten von einem Sensor, der eine Echtzeit-Anzeige haben sollen, so müssen die Daten im laufenden Betrieb neu abgetastet werden.
Lösung
Der schnellste Weg 30x400 Datenpunkte angezeigt werden soll:
Mit OpenGL Farbe Arrays
Wenn Sie schnell Ihre Daten zu transformieren können, was OpenGL versteht als Farbarray, könnten Sie eine Vertex-Array erstellen Quads beschreiben, eine für jeden Sensor, dann Farbarray aktualisieren und diese zeichnen orthographically auf dem Bildschirm.
Mit OpenGL-Texturen
Wenn Sie schnell Ihre Datenpunkte zu einer OpenGL Textur verwandeln können Sie ein Quad mit festen UV ziehen können Koordinaten, die auf diese Textur gebunden ist.
Mit pygame
Pygame Unterstützung für die Konvertierung von Numpy / numarray auf Oberflächen hat, Pygame kann dann solche Oberflächen verwandelt, das Resampling beinhaltet, nach dem Resampling Sie es auf dem Bildschirm blitten können.
Verschiedenes
Pyglet macht mit opengl Umgang sehr einfach