v1.4.0¶
v1.4.0 是一次奠基性的 imlib 重組。find_blobs()/find_markers() 被重寫以支援直接色彩閾值追蹤,許多獨立的影像方法被併入色塊元組,且數個影像方法被重新命名(subimg → copy、blit → replace、find_eyes → find_eye、compress → compressed)。它也新增了 sensor.get_fb()/AGC/AEC 切換,以及約 60 個範例指令碼。這是一次破壞性極大的版本——請閱讀下方的破壞性變更。
重點摘要¶
基於色彩的色塊追蹤——
find_blobs()直接接受色彩閾值,並回傳扁平的色塊元組清單。Imlib 清理——
subimg()→copy()、blit()→replace()、find_eyes()→find_eye()、compress()→compressed()。感測器——新增
sensor.get_fb()與 AGC/AEC 啟用切換。新增/擴充約 60 個範例指令碼。
破壞性變更: 色塊 API、移除的影像方法,以及數項重新命名——詳見破壞性變更。
新功能¶
感測器——新增
sensor.get_fb()(取得最後一次快照的影格緩衝區)、sensor.set_gain_ctrl(enable)(切換 AGC)與sensor.set_exposure_ctrl(enable)(切換 AEC)。影像——影像下標(
img[i])現在同時支援讀取與寫入像素(灰階/RGB565/JPEG);新增就地的image.compress()以及 JPEG 函式上的quality=關鍵字;find_blobs()/find_markers()/find_features()現在於找不到結果時回傳空的(可迭代)清單,而非非清單值。新增約 60 個範例指令碼(開發板控制、影像濾波器、色彩追蹤、人臉/眼睛/特徵偵測、WiFi 擴充板),以及第二個虹膜偵測範例。
其他變更與改進¶
image.histeq()現在可用於 RGB565 影像,而不僅限於灰階。
錯誤修正¶
於開機時初始化
pyb.DAC使 DAC 可正常運作(#121),修正了損壞的image.dilate()、WINCclient.send()的零位元組損毀、色塊合併的重新迭代、一個導致首次使用後檔案系統失效的檔案緩衝區重新初始化錯誤、熱電堆的To_min/To_max計算(#113),並套用了上游 MicroPython HAL I2C/DMA 修補。
硬體與開發板支援¶
WiFi 擴充板——WINC1500 更新至 Rev-B 開發板檔案。
pyb.DAC——已啟用 DAC 周邊裝置。
破壞性 API 變更¶
v1.3.0 與 v1.4.0 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更都標註其影響程度:
重大——影響大部分使用該功能的指令碼;您需要移植程式碼。
次要——範圍狹窄的 API;僅影響使用到它的指令碼。
各項變更依此順序按影響程度分組。若您只想移植程式碼,請跳至結尾的遷移檢查清單。每個提交雜湊都連結至其在 GitHub 上的差異。
find_blobs()/find_markers() 已重寫 (重大)¶
image.find_blobs()/find_markers() 被重寫以支援基於色彩的追蹤:您現在直接傳入色彩閾值(以及選用的濾波函式),而非對預先分割的影像進行操作,且結果是單一扁平的 10 元素色塊元組清單(含色碼欄位),而非巢狀的逐色彩樹狀結構。請重構色彩追蹤指令碼,改為傳入色彩閾值並迭代扁平清單。
移除獨立的影像方法 (重大)¶
image.threshold、image.centroid()、image.orientation_radians()、image.orientation_degrees() 與 image.pixels() 已被移除。形心/方向/像素計數資料現在可作為 find_blobs() 所回傳色塊元組的欄位取得。
提交: 9e5d379c1
Imlib 方法重新命名 (重大)¶
數個影像方法被重新命名/重構:image.subimg() → image.copy()、image.blit() → image.replace(),且 image.blend() 已變更以與其他兩種雙影像運算一致。image.scale()/scaled()/rainbow() 方法已被移除(rainbow 移至 FIR 模組)。請更新呼叫為新名稱。
提交: b534dc6ff
find_eyes() 重新命名為 find_eye() (次要)¶
image.find_eyes() 已重新命名為 image.find_eye(),且現在回傳虹膜的 2 元組 (x, y),而非先前的眼睛元組。請重新命名呼叫並更新回傳值的處理方式。
提交: 7a01a9bed
image.compress() 重新命名為 compressed() (次要)¶
image.compress()(原本回傳新的 JPEG 影像)已重新命名為 image.compressed();新的 image.compress() 改為就地壓縮影像並回傳 None。image.save() 也新增了 quality= 關鍵字,且現在回傳 None 而非 True。請將 img.compress(q)(預期回傳影像)遷移為 img.compressed(quality=q)。
提交: 367e5fdd3
遷移檢查清單¶
若要乾淨地移植到 v1.4.0,通常需要進行的工作為:
重構色彩追蹤程式碼,改為將色彩閾值傳入
find_blobs()/find_markers()並迭代扁平的色塊元組清單(find_blobs 的重寫)。改為從色塊元組讀取形心/方向/像素資料,而非已移除的獨立方法(移除的影像方法)。
將
subimg→copy、blit→replace重新命名,修正blend()呼叫,並替換scale/scaled/rainbow(imlib 重新命名)。將
find_eyes()→find_eye()(find_eye 重新命名)與compress()→compressed()(compress 重新命名)重新命名。
所有其他指令碼皆可不經修改地執行。