Qual è il modo più veloce per ridimensionare e visualizzare un'immagine in Python?
-
02-07-2019 - |
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.
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