6.20. Riepilogo

Il capitolo ha coperto le parti di numpy e scipy a cui un’applicazione OpenMV ricorre quando un’operazione non ha un metodo integrato nella libreria immagini:

  • Concetti – cos’è un ndarray, perché un buffer tipizzato compatto batte una list Python per il lavoro numerico, e l’insieme di dtype che la camera supporta.

  • Forma e indicizzazione – viste vs. copie, assegnazione tramite slice per aggiornamenti senza allocazione, transpose() come modifica di descrittore.

  • Matematica – operatori elemento per elemento, funzioni universali come sin(), regole di broadcasting, riduzioni come mean(), e funzioni di selezione come where().

  • Algebra linearedot() per il prodotto matriciale, inv() / det() per l’inversa, e le decomposizioni e i risolutori sotto numpy.linalg e scipy.linalg per problemi con più struttura.

  • Elaborazione dei segnalifft(), sosfilt() per il filtraggio digitale, e spectrogram() per spettri di magnitudine senza allocazione in un loop in streaming.

  • Curve e integrazioneinterp(), polyfit() / polyval(), convolve() per brevi filtri FIR, trapz() per l’integrazione trapezoidale di dati campionati.

  • Risolutori e numeri casualiscipy.integrate per la quadratura di una funzione richiamabile Python, scipy.optimize per la ricerca di radici e la minimizzazione, scipy.special per le funzioni speciali statistiche, e Generator per il campionamento pseudo-casuale.

  • Immagini – il ponte to_ndarray() e image.Image per i rari casi che la libreria immagini non copre.

  • Prestazioni – dtype piccoli, buffer pre-allocati, operatori in-place, parole chiave out=, e attenzione al churn delle maschere booleane nei loop in streaming.

Questo copre il lavoro numerico generico su cui il resto della camera si appoggia. numpy è la cassetta degli attrezzi a cui un’applicazione attinge quando un’operazione non ha un metodo integrato su Image – una trasformazione personalizzata dei pixel, una risoluzione di calibrazione, una FFT di audio bufferizzato.