Domanda

Mi viene richiesto di visualizzare un array numpy. bidimensionale di int16 a circa 20 fps. Usando l'imshow di Matplotlib soffoca su qualsiasi cosa sopra i 10 fps. Ovviamente ci sono alcuni problemi con il ridimensionamento e l'interpolazione. Dovrei aggiungere che le dimensioni dell'array non sono note, ma probabilmente saranno circa trenta per quattrocento.

Questi sono i dati di un sensore che dovrebbero avere una visualizzazione in tempo reale, quindi i dati devono essere ricampionati al volo.

È stato utile?

Soluzione

Il modo più veloce per visualizzare punti dati 30x400 è:

Usa matrici di colori OpenGL

Se riesci a trasformare rapidamente i tuoi dati in ciò che OpenGL comprende come array di colori, potresti creare un array di vertici che descrive quad, uno per ciascun sensore, quindi aggiornare l'array di colori e disegnarlo ortogonalmente sullo schermo.

Usa trame OpenGL

Se riesci a trasformare rapidamente i tuoi punti dati in una trama aperta, puoi disegnare un quadratino con coordinate UV fisse che è associato a questa trama.

Usa pygame

Pygame supporta la conversione di Numpy / Numarray in superfici, Pygame può quindi trasformare tali superfici che comportano il ricampionamento, dopo il ricampionamento è possibile accecarlo sullo schermo.

Varie

pyglet semplifica la gestione dell'opengl

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top