Question

Je suis tenu d’afficher un numpy.array à deux dimensions de int16 à 20 images par seconde environ. Utiliser les selfs imshow de Matplotlib sur tout ce qui dépasse 10fps. Il y a évidemment des problèmes de mise à l'échelle et d'interpolation. Je devrais ajouter que les dimensions du tableau ne sont pas connues, mais seront probablement autour de trente sur quatre cents.

Ce sont des données provenant d'un capteur censé avoir un affichage en temps réel. Les données doivent donc être ré-échantillonnées à la volée.

Était-ce utile?

La solution

Le moyen le plus rapide d'afficher 30 x 400 points de données est le suivant:

Utiliser les tableaux de couleurs OpenGL

Si vous pouvez transformer rapidement vos données en ce que OpenGL définit comme un tableau de couleurs, vous pouvez créer un tableau de sommets décrivant les quads, un pour chaque capteur, puis mettre à jour votre tableau de couleurs et le dessiner orthographiquement à l'écran.

Utiliser les textures OpenGL

Si vous pouvez transformer rapidement vos points de données en une texture opengl, vous pouvez dessiner un quad avec des coordonnées UV fixes liées à cette texture.

Utiliser pygame

Pygame prend en charge la conversion de Numpy / Numarray en surfaces. Pygame peut ensuite transformer ces surfaces, ce qui implique un rééchantillonnage. Après le rééchantillonnage, vous pouvez l'afficher à l'écran.

Divers

pyglet facilite l'utilisation de opengl

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top