v4.5.3¶
v4.5.3 是一個大型版本:OV5640 自動對焦、抗鋸齒線條繪製、納入主線的硬體 JPEG 解碼器、i.MX RT (RT1060) 大幅提升的功能,以及一系列廣泛的相機/ISP 修正。部分鮮少使用的影像方法已被移除,且部分 ISP/顯示 API 也有所變更——請閱讀下方的破壞性變更。
重點摘要¶
OV5640 自動對焦——在 OpenMV 4 / 4 Plus / RT1060 上啟用(
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)),並附有範例。抗鋸齒的
draw_line()以及納入主線的 STM32 硬體 JPEG 解碼器(更快的 JPEG 解壓縮)。OpenMV RT1060 新增了 ulab、ISP 運算、
set_framerate()/set_frame_callback()、大幅加大的影格緩衝區,以及 CAN 驅動程式。破壞性:
Image.div()/cartoon()/mul()已被移除,部分 ISP/顯示 API 也有所變更——請參閱破壞性變更。
新功能¶
OV5640 自動對焦——自動對焦韌體已在 OPENMV4、OPENMV4P 與 OPENMV RT1060 上啟用;透過
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)觸發。新增了07-Sensor-Control/autofocus.py範例。抗鋸齒線條繪製——
draw_line()新增了抗鋸齒功能。自訂 SPI 顯示控制器——
SPIDisplay現在接受controller=關鍵字,並提供bus_write掛鉤以進行自訂的初始化/命令序列。Image.ccm()升級——現在接受巢狀的 3x3 / 4x3 / 3x4 / 4x4 矩陣以及 ulab 陣列(可選擇加上逐通道的偏移列);新增了色彩校正範例。i.MX RT JPEG 擷取——在 Arduino Portenta/Nicla Vision/Giga 上支援
sensor.JPEG擷取,並在 mimxrt port 上新增set_framerate()與set_frame_callback()。TFLite 模型驗證——模型現在帶有運算子順序雜湊值與運算子集大小。
WiFi——新增 CYW43 安全模式常數;新增 i.MX RT 開發板控制範例指令碼(Pin/ADC/CAN/I2C/PWM/SPI/UART/...)。
其他變更與改進¶
MicroPython 更新至 1.22;CMSIS 更新至 5.9.0。
納入主線的 STM32 硬體 JPEG 解碼器——透過晶片內建編解碼器加快 JPEG 解壓縮。
最佳化
Image.invert()/negate()以及二進位/數學影像運算(CMSIS 內建函式)。rpc與vl53l1x函式庫已改為可移植(使用machine/time取代pyb),因此可在非 STM32 port 上執行。在 OpenMV H7 / H7 Plus / Pro / Pure Thermal 與 Arduino Giga / Nicla Vision / Portenta H7 上採用 DMA 加速的影格緩衝區 memcpy;STM32 現在每次掃描只掃描一次 I2C 裝置以加快開機。
錯誤修正¶
相機與感測器:
修正 STM32 相機 XCLK 使其達到真正的 50% 工作週期,以及相機時脈頻率設為零時的錯誤;修正 Bayer 裁切+轉置、YUV422 色彩偏移,以及 mimxrt port 上的
set_windowing()。修正 GC2145 晶片 ID 探測以及旋轉安裝時的 hmirror/vflip;修正 RT1062 上的 PAJ6100 以及 PixArt PAJ7620/PAW3902 的 SPI 緩衝區溢位。
影像處理:
修正
find_rects()的 roi 裁切、morph()的小數偏移截斷、image.gamma()的對比/亮度預設值、RGB565 上get_threshold()的 A/B 偏移,以及尺寸非 8 倍數時的 JPEG 解碼。
系統與函式庫:
不帶引數的
machine.LED.value()現在會回傳 LED 狀態,而非清除它;修正共用匯流排上的 SPI SSEL deinit、RT1062 上的machine.deepsleep()、缺少運算子時的 TF 當機,以及 WINC1500/ninaw10 NIC 在connect()時的自動啟用。
硬體與開發板支援¶
OpenMV RT1060——啟用 ulab 與 ISP 運算、加大的影格緩衝區(10M→20M)/ fb_alloc(2M→11M)、還原 CAN 驅動程式、更多堆積記憶體。
Arduino GIGA——支援 GC2145 相機,並具備 GC2145/OV5640 自動偵測(兩者共用同一個 I2C 位址)。
i.MX RT——支援
sensor.JPEG擷取。
破壞性 API 變更¶
v4.5.2 與 v4.5.3 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更都標註了其影響:
minor——範圍狹窄的 API;僅影響使用到它的指令碼。
behavior——相同的 API,但結果不同;請重新檢查已調校的指令碼。
變更依影響程度依此順序分組。如果你只想移植自己的程式碼,可直接跳至結尾的 移植檢查清單。每個 commit 雜湊值都連結至其在 GitHub 上的 diff。
已移除的影像方法 (minor)¶
Image.div()、Image.cartoon()(及其範例)與 Image.mul() 已被移除。
顯示模組 API (minor)¶
舊有的 udisplay 模組名稱備援已被移除——此模組現在僅以 display 註冊。僅限 DSI 的 dsi_write() / dsi_read() 方法已被 bus_write() / bus_read() 取代,現在所有顯示控制器上都可使用。
MQTT 與 tf.regression API 變更 (minor)¶
mqtt 函式庫的 MQTTClient 已重新設計:port 現在為必要項目,新增了 ssl_params / callback 建構子關鍵字以及 connect() 上的 timeout 引數,移除了舊有的 ssl= / port=0 預設值,且 check_msg() 現在為非阻塞式。tf.regression() 已重寫——其簽章現在為 regression(model, array),並能處理 1D/2D/3D 與量化(int8)模型。
ISP/感測器行為變更 (behavior)¶
Image.awb() 已重新設計——灰世界(預設)與白色補丁(max=True)現在為明確區分,而 max 引數以及 Image.gamma() 的 gamma / contrast / brightness 引數現在僅限關鍵字(位置式呼叫必須更新)。影像轉置現在對 YUV422 停用(先前會產生不正確的輸出),且 YUV422 色彩偏移已修正以符合 Bayer。STM32 JPEG 路徑現在於 JPEG 幾何不符時會引發錯誤,而非產生損壞的影像,且 WiFi AP 模式現在會在 STM32 與 i.MX RT port 上套用預設的安全模式。
Commits: 36d5cecbd、00500ccde、c1eeaefd6、333fb2b5f、55cab8733、c7d40f6af
移植檢查清單¶
若要乾淨地移植至 v4.5.3,典型的工作為:
停止使用
Image.div()/cartoon()/mul()(已移除的方法)。將顯示模組匯入為
display,並將dsi_write/dsi_read切換為bus_write/bus_read(顯示 API 變更)。更新
MQTTClient的建構方式(port為必要項目;ssl_params/callback)以及任何tf.regression()呼叫(函式庫 API 變更)。將
awb()的max以及gamma()的gamma/contrast/brightness以關鍵字引數傳遞,並重新檢查 YUV422/轉置以及 AP 模式安全性的假設(ISP/感測器變更)。