v4.5.1¶
v4.5.1 新增了图像方向/宽高比绘制提示、直接从文件路径加载图像、GC2145 宽视场 ioctl,以及新的背光控制器 API。它还重构了 Image() 构造函数、display API 和模块参数解析——请阅读下文的破坏性变更。
亮点¶
绘制提示——
draw_image()新增了方向提示(HMIRROR/VFLIP/TRANSPOSE、ROTATE_90/180/270)和宽高比缩放提示(SCALE_ASPECT_KEEP/EXPAND/IGNORE)。从磁盘加载图像——
draw_image()/display.write()接受文件路径字符串。背光控制——新增
DACBacklight/PWMBacklight类和显示器backlight=参数。破坏性变更:
Image()构造函数、displayAPI 和模块参数解析已变更——参见破坏性变更。
新功能¶
draw_image()方向提示——image.HMIRROR、image.VFLIP、image.TRANSPOSE,外加便捷的image.ROTATE_90/ROTATE_180/ROTATE_270。draw_image()宽高比提示——image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNORE,分别用于适配 / 扩展 / 拉伸。调色板常量——
image.PALETTE_RAINBOW和image.PALETTE_IRONBOW(已移入 image 模块)。宽视场——新的
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDEioctl(在 GC2145 上,传感器缩放可达 5 倍)。从磁盘加载——
draw_image()和display.write()接受源图像文件路径字符串,直接从存储中加载。背光控制器——新增
DACBacklight和PWMBacklight类(可从display导入),以及 SPI/parallel 显示构造函数上仅限关键字的backlight=参数。
其他变更与改进¶
ST7701 DSI 显示驱动被移入其独立的
st7701.py模块(仍可通过from display import *导入),并在 Arduino Giga 上冻结;lsm9ds1IMU 驱动在 Arduino Nano 33 BLE Sense 上冻结。MT9V022 / MT9V034(全局快门)摄像头现在应用行噪声校正以获得更好的图像质量。
i.MX RT 的 USB 大容量存储卷现在标记为 OpenMV 磁盘。
缺陷修复¶
摄像头与传感器:
修复了在高度超过 480 行的图像上进行角点检测(
find_keypoints()FAST/AGAST)的问题——每行缓冲区现在按图像高度调整大小。为 i.MX RT(OpenMV RT1060)上帧同步的
snapshot()添加了 FSYNC 引脚支持,并修复了 RT1060 上 SPI4 MOSI/MISO 引脚互换的问题。
显示与视频:
修正了
SPIDisplay构造函数的参数顺序(bgr、byte_swap、triple_buffer此前被应用到了错误的参数上)。修复了在绘制带指定矩形的图像时 TV 扩展板图像损坏的问题,以及录制缩放帧时 MJPEG 帧边界不正确的问题。
网络:
WINC WiFi AP 模式不再强制执行过时的仅 WEP 限制——开放和 WPA AP 模式可在正确处理 PSK 的情况下正常工作。
硬件与开发板支持¶
OpenMV RT1060——FSYNC 引脚及修正后的 SPI4 引脚。
Arduino GIGA——QSPI 可靠性临时方案;冻结了 ST7701 显示驱动。
Arduino Nano 33 BLE Sense——冻结了
lsm9ds1IMU 驱动。
破坏性 API 变更¶
v4.5.0 与 v4.5.1 之间面向用户的 API 破坏性变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。
每项变更都标注了其影响:
minor——影响面较窄的 API;仅影响使用过它的脚本。
behavior——API 相同但结果不同;请重新检查已调优的脚本。
变更按影响程度依此顺序分组。如果你只想移植代码,可直接跳到末尾的 迁移清单。每个提交哈希都链接到其在 GitHub 上的 diff。
Image() 构造函数和 display API (minor)¶
image.Image 构造函数被重构为关键字参数(height、pixformat、buffer=、copy_to_fb=);现在它可以从已有的 bytearray/缓冲区构建图像,而压缩格式则需要提供缓冲区。display.write() 也被重构:x_scale/y_scale 现在接受浮点数(缩放比例)或整数(以像素为单位的目标尺寸),并移除了独立的 x_size/y_size 关键字。WINC.connect() 的第一个位置参数从 essid 重命名为 ssid,WINC WiFi 扫描结果改为 (ssid_bytes, bssid_bytes, channel, rssi, security, N)(SSID/BSSID 现在是字节;BSSID 不再是格式化的 MAC 字符串)。
背光范围、缩放和仅限关键字的参数 (behavior)¶
Display.backlight() 现在接受 0–100 的强度(0 = 关闭,100 = 全亮),而非 0–255,超出范围会抛出 ValueError。整数 x_scale/y_scale 值现在被视为乘性缩放因子(与浮点数相同),而非目标像素尺寸——这会影响 fir.snapshot()/draw_ir()、tof.snapshot()/ draw_depth()、display 和 tv 缩放。sensor、fir、tof、tv、mjpeg、gif、imageio、tf 和 audio 模块的参数解析已统一,使若干此前为位置参数的选项变为仅限关键字(名称、默认值和行为在其他方面保持不变)。
提交: 391ec443f、8bd25d6cd、477312656、08bf62a32、a4c0f20bf、9b411a66d、3d679f5a6、d15fc6b8d、555e67ecd
迁移清单¶
干净地移植到 v4.5.1 通常需要完成以下工作:
将
Image()的构造更新为新的关键字形式,将display.write()从x_size/y_size切换过来,并将WINC.connect()的essid重命名为ssid(处理新的基于字节的扫描元组)(构造函数/display/WINC 变更)。将
Display.backlight()调用重新缩放到 0–100,重新检查所有整数x_scale/y_scale的用法,并将此前为位置参数的模块选项以关键字形式传递(行为变更)。