6.20. 總結¶
本章涵蓋了當某項操作沒有內建的影像庫方法時,OpenMV 應用程式會用到的 numpy 與 scipy 部分:
概念,即
ndarray是什麼、為何在數值運算上一個緊湊的型別化緩衝區勝過 Pythonlist,以及相機支援的 dtype 集合。形狀與索引,即視圖與副本之分、用於免配置更新的切片指派,以及作為描述子編輯的
transpose()。數學運算,即逐元素運算子、像
sin()這樣的通用函式、廣播規則、像mean()這樣的歸約,以及像where()這樣的選取輔助函式。線性代數,即用於矩陣相乘的
dot()、用於求反矩陣的inv()/det(),以及numpy.linalg與scipy.linalg之下用於更具結構之問題的分解與求解器。訊號處理,即
fft()、用於數位濾波的sosfilt(),以及用於在串流迴圈中免配置計算幅值頻譜的spectrogram()。曲線與積分,即
interp()、polyfit()/polyval()、用於短 FIR 濾波器的convolve(),以及用於對取樣資料進行梯形積分的trapz()。求解器與隨機數,即用於對 Python 可呼叫物件進行數值積分的
scipy.integrate、用於求根與最小化的scipy.optimize、用於統計特殊函式的scipy.special,以及用於偽隨機抽樣的Generator。影像,即用於影像庫未涵蓋之罕見情形的
to_ndarray()與image.Image橋接。效能,即小型 dtype、預先配置的緩衝區、就地運算子、
out=關鍵字,以及在串流迴圈中提防布林遮罩造成的反覆配置。
以上涵蓋了相機其餘部分所依賴的通用數值運算。當某項操作在 Image 上沒有內建方法時,numpy 正是應用程式會伸手取用的工具箱,例如自訂的像素轉換、校正求解,或對緩衝音訊進行 FFT。