v4.5.9¶
v4.5.9 为没有硬件 JPEG 编码器的板卡带来了原始预览流式传输,提供了硬件传感器裁剪以释放更多 RAM,加快了 Helium 加速的去拜耳处理,并修复了一批摄像头/USB 调试问题。它还更改了 AprilTag 结果 API 和默认的 AprilTag 家族集合,因此请阅读下文的破坏性变更。
重点摘要¶
原始预览流式传输——没有硬件 JPEG 编码器的板卡现在可以向 IDE/主机发送降采样的原始帧,而不再因无法预览而失败。
硬件传感器裁剪——设置更小的帧尺寸现在可减少每个缓冲区的内存占用,并为
fb_alloc()释放 RAM。更快的去拜耳处理——拜耳→RGB/灰度转换现在在 Cortex-M55 板卡上通过 Helium-SIMD 加速。
破坏性变更: AprilTag 结果对象改为属性访问,且默认的 AprilTag 家族集合被缩减(参见 AprilTag 变更 和 AprilTag 家族变更)。
新特性¶
原始预览流式传输——没有硬件 JPEG 编码器的板卡可以绕过 JPEG,将降采样的原始帧(上限约 60 KB)流式传输到 IDE/主机,使这些板卡上的实时预览得以工作。
其他变更与改进¶
硬件裁剪现在在所有 STM32/NXP 板卡(Giga、Nicla Vision、Portenta H7、OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060)上启用。设置帧尺寸或窗口后,每个缓冲区的内存会被缩减到裁剪后的尺寸,为
fb_alloc()释放更多 RAM。更快的去拜耳处理——拜耳→RGB565/灰度转换现在在 Cortex-M55 板卡(如 RT1060)上通过 ARM Helium/MVE SIMD 加速,并共享一条 SIMD JPEG 编码器路径。
更快的 IDE 调试——调试器现在尽可能直接从 USB 协议栈传输数据,避免一次额外的拷贝。
MicroPython 子模块已更新——板卡可以调整 TinyUSB CDC 缓冲区的大小,外加 GC 和构建规则的修复。
错误修复¶
摄像头与传感器:
修正了 OV7725 的拜耳/CFA 模式(GBRG → BGGR),修复了 OV7725 摄像头去拜耳后的颜色输出;OV7725 现在会报告拜耳像素格式,且仅支持拜耳的传感器现在会报告每像素 1 字节的源深度。
修复了原始/拜耳帧缓冲区大小的计算。
机器学习:
TensorFlow Lite Micro 现在在确定临时张量竞技场大小时会使用 GC 堆的空闲内存,防止在帧缓冲内存有限的板卡上发生模型加载分配失败。
主机 / IDE:
修复了 TinyUSB 板卡上的 USB 调试 CDC 缓冲区处理,使串口/调试吞吐量更可靠。
tools/pyopenmv:修复了 RGB565 字节序,新增了scale参数,并且帧缓冲工具现在会报告图像尺寸/格式。
硬件与板卡支持¶
OV7725 现在会报告拜耳像素格式(正确处理原始/CFA)。
硬件裁剪已在整个 STM32/NXP 板卡系列上启用。
破坏性 API 变更¶
v4.5.8 与 v4.5.9 之间用户可见的 API 变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。
每项变更都标注了其影响:
minor(轻微)——API 范围较窄;仅影响用到它的脚本。
behavior(行为)——API 相同但结果不同;请重新检查已调优的脚本。
变更按影响顺序分组。如果你只想移植代码,可直接跳到末尾的 迁移清单。每个提交哈希都链接到 GitHub 上对应的 diff。
AprilTag 结果对象与 set_buffers (minor)¶
find_apriltags() 返回的 AprilTag 结果现在以属性而非方法的形式暴露其数据——请使用 tag.cx、tag.cy、tag.rotation、tag.family、tag.corners,而不是 tag.cx()、tag.family() 等。新增了 name(家族名称字符串)以及浮点精度的 cxf / cyf 访问器。
另外,自动视频缓冲区配置也发生了变化:set_buffers 取代了 auto_adjust——传入 -1 可使用最多三个帧尺寸大小的缓冲区(或尽可能多的能容纳的缓冲区),传入 1 则使用整个帧缓冲区。缓冲区大小现在会考虑每像素位数,因此对于 1 bpp 格式可以分配更多缓冲区。
ble_advertising 与基于网络的 RPC 已移除 (minor)¶
ble_advertising 辅助库和 ble_temperature.py 示例已被移除——请改用 aioble(已提供一个 aioble 温度示例)。RPC 网络主/从类已从 rpc.py 中移除。
AprilTag 家族默认禁用 (behavior)¶
AprilTag 家族现在可在编译时单独选择,未使用的家族默认禁用。在标准板卡上,除非固件被重新编译并启用其他家族,否则 find_apriltags() 现在只检测 TAG36H11 家族。在标准构建上依赖其他家族(TAG16H5、TAG25H9 等)的脚本将悄无声息地停止检测它们。
提交: effe12f2c
迁移清单¶
要干净地移植到 v4.5.9,通常需要做的工作是:
将 AprilTag 结果访问从方法调用改为属性(
tag.cx()→tag.cx),并将auto_adjust切换为set_buffers(AprilTag / 缓冲区变更)。如果你在标准构建上使用
TAG36H11以外的 AprilTag 家族,请注意它们默认不再被检测(AprilTag 家族变更)。