6.20. Sammanfattning

Detta kapitel täckte de delar av numpy och scipy som en OpenMV-applikation tar till när en operation inte har en inbyggd metod i bildbiblioteket:

  • Begrepp – vad en ndarray är, varför en packad typad buffert slår en Python-list för numeriskt arbete, och den uppsättning dtype:r som kameran stöder.

  • Form och indexering – vyer kontra kopior, slice-tilldelning för allokeringsfria uppdateringar, transpose() som en deskriptorredigering.

  • Matematik – elementvisa operatorer, universella funktioner som sin(), broadcasting-regler, reduktioner som mean(), och urvalshjälpare som where().

  • Linjär algebradot() för matrismultiplikation, inv() / det() för inversen, och dekompositionerna och lösarna under numpy.linalg och scipy.linalg för problem med mer struktur.

  • Signalbehandlingfft(), sosfilt() för digital filtrering, och spectrogram() för allokeringsfria magnitudspektra i en strömmande loop.

  • Kurvor och integrationinterp(), polyfit() / polyval(), convolve() för korta FIR-filter, trapz() för trapetsintegration av samplad data.

  • Lösare och slumptalscipy.integrate för kvadratur av en anropbar Python-funktion, scipy.optimize för rotsökning och minimering, scipy.special för statistiska specialfunktioner, och Generator för pseudoslumpmässig sampling.

  • Bilder – bryggan to_ndarray() och image.Image för de sällsynta fall där bildbiblioteket inte täcker behovet.

  • Prestanda – små dtype:r, förallokerade buffertar, in-place-operatorer, out=-nyckelord, och att hålla utkik efter omsättning av booleska masker i strömmande loopar.

Det täcker det generiska numeriska arbete som resten av kameran lutar sig mot. numpy är verktygslådan en applikation når in i när en operation inte har en inbyggd metod på Image – en anpassad pixeltransform, en kalibreringslösning, en FFT av buffrat ljud.