v3.6.0

v3.6.0 带来了完整的 OV5640 5 MP 摄像头支持以及新的高分辨率帧尺寸(HD / FHD / QHD / QXGA / WQXGA),将核心更新到 MicroPython 1.12,大幅优化了软件 JPEG 编码器以及 AprilTag / 直线检测,在 OpenMV Cam H7 Plus 上新增了 UVC(USB 视频),并支持最高 32 MB 的 QSPI 闪存。MicroPython 的行为和 get_histogram() 已更改 —— 请阅读下文的破坏性变更。

亮点

  • OV5640 5 MP —— 完整的摄像头驱动,带有新的 HD / FHD / QHD / QXGA / WQXGA / WQXGA2 帧尺寸。

  • MicroPython 1.12 —— 更新了捆绑的核心。

  • 更快的流水线 —— 大幅优化了软件 JPEG 编码、AprilTag 检测、LSD 直线检测、histeq() 以及二维码解码。

  • H7 Plus 上的 UVC —— OpenMV Cam H7 Plus 可充当 USB 视频设备。

  • 破坏性变更: MicroPython 的行为、image.get_histogram() 的归一化方式以及 OpenMV 3 的 JPEG/灰度输出均已更改 —— 详见破坏性变更。

新特性

  • OV5640 —— 新增对 OV5640 5 MP 摄像头的完整支持(在传感器初始化中配置外部时钟)以及新的 sensor.HD / FHD / QHD / QXGA / WQXGA / WQXGA2 帧尺寸常量。

  • TIM4 —— 释放出来,使其可从 MicroPython 中使用。

  • 新增了一个 DAC 定时写入示例(dac_write_timed.py),并将 dac_control.py 重命名为 dac_write.py

其他变更与改进

  • 将捆绑的 MicroPython 更新到 1.12;大幅优化了软件 JPEG 编码器(VGA 路径、灰度/二值路径、用整数代替浮点运算、优化的 MCU 捕获)、LSD find_line_segments()、AprilTag 检测、Image.histeq() 以及二维码 / RGB 转灰度的转换;新增了对最高 32 MB 芯片的 QSPI 闪存支持;移除了过时的 CMSIS-CNN cnn.py 示例。

缺陷修复

摄像头与成像:

  • 修复了 HQQQVGA 下的 JPEG 编码损坏、二值(1 位)图像 → JPEG 压缩、一处 find_line_segments() 回归问题(重新启用了 NOTDEF 非对齐检查),以及一些次要的 OV2640 驱动问题。

系统与引导:

  • 修复了自检 / 文件系统损坏问题(selftest.py 现在会在启用 USB MSC 之前运行,并且在发生致命错误时启用 USB MSC,以便主机可读取错误日志)、pyb.DACwrite_timed()、H7 的 machine.I2C 时序、F7 在停止模式后重新启用过驱(overdrive),以及 stop_mode.py 中的 rtc.wakeup() 间隔。

硬件与开发板支持

  • OV5640 —— 完整的 5 MP 摄像头驱动,带高分辨率帧尺寸。

  • OpenMV Cam H7 Plus —— UVC(USB 视频)支持;OPENMV4R 开发板目标被重命名为 OPENMV4P

  • QSPI 闪存 —— 现在支持最高 32 MB 的芯片。

破坏性 API 变更

v3.5.2 与 v3.6.0 之间面向用户的 API 破坏性变更。范围:modules/ 中的 Python C 模块以及 scripts/libraries/ 中的 Python 库。

这三项破坏性变更都是行为变更(API 相同,但结果不同)—— 请重新检查受影响的脚本。每个提交哈希都链接到其在 GitHub 上的 diff。

MicroPython 更新到 1.12 (行为)

捆绑的 MicroPython 核心已更新到 1.12。标准库和语言行为遵循上游 MicroPython 1.12;请重新检查依赖于特定版本的 micropython / 标准模块行为的脚本。

提交: eafd431ea

image.get_histogram() 的阈值归一化方式已更改 (行为)

带颜色阈值的 image.get_histogram()(以及 get_statistics())现在按被阈值化的像素数量进行归一化,而非整个 ROI,并且在分箱索引时使用向下取整(floor)而非四舍五入(round)。对于带阈值的调用,直方图/统计值与之前的版本不同 —— 请重新调整那些与绝对直方图值进行比较的代码。

提交: 7cf0f8089

OpenMV 3 的 JPEG/灰度输出已更改 (行为)

为了节省闪存,OpenMV 3(M7)的 YUV 查找表已被禁用,因此在 OpenMV 3 上 JPEG 和灰度输出的像素值计算方式略有不同。输出仍然有效,但与之前的版本存在细微差异;请在 OpenMV 3 上重新检查需要像素级精确比较的代码。

提交: 0e4b46e41

迁移清单

针对 1.12 重新验证依赖于特定版本 MicroPython 行为的脚本(MicroPython 升级),在使用颜色阈值时重新调整那些与绝对 get_histogram() / get_statistics() 值进行比较的代码(直方图变更),并在 OpenMV 3 上重新检查像素级精确比较(OpenMV 3 输出变更)。其余所有脚本均可原样运行。