v1.7.0

v1.7.0 引入了 cpufreq 模块(CPU 频率 / 超频控制)、MicroPython 的 os 模块、MLX 热成像传感器的刷新率 / 分辨率控制,以及初步的 OpenMV Cam M7(STM32F7)开发板适配。fir.init() 的签名、超大帧的处理方式以及默认 JPEG 质量都发生了变化——请阅读下方的破坏性变更。

亮点

  • cpufreq 模块——查询 / 设置 CPU 频率,并附带超频示例。

  • os 模块——现已支持 MicroPython 的 os 模块。

  • MLX 热成像 —— fir.init() 现接受刷新率和 ADC 分辨率参数。

  • OpenMV Cam M7 —— 初步的 STM32F7 开发板适配。

  • 破坏性变更: fir.init() 现在仅接受关键字参数,超大帧会自动裁剪,且默认 JPEG 质量已下调——请参阅破坏性变更。

新功能

  • cpufreq —— 新增 cpufreq 模块,提供 cpufreq.get_frequency() / cpufreq.set_frequency() 以及 CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ 常量,另附 overclocking.py 示例。

  • os —— 启用了 MicroPython 的 os 模块。

  • MLX / FIR —— fir.init() 现在接受刷新率和 ADC 分辨率参数,并为 MLX 热成像传感器提供相应的 refresh / resolution 控制。

其他变更与改进

  • 调优了 OV7725 的 AGC/AEC 区域(减少运动模糊),为 OV7725 启用了 DSP 纯色彩条,并修复了 IDE 帧缓冲区流式传输(不再出现过时 / 重复帧)。

缺陷修复

  • 修复了 sensor.snapshot() 中的 DCMI/DMA 传输大小溢出问题,整理了 JPEG 压缩缓冲区溢出的处理逻辑,改进了 OV7725 的 AEC/AGC 工作区域以获得更好的自动曝光 / 增益,并修正了 OV7725 的彩条 / 自检脚本。

硬件与开发板支持

  • OpenMV Cam M7(STM32F7 / OPENMV7) —— 初步的开发板和引导加载程序支持。

  • OpenMV 2 —— 传感器时钟由 MCO 输出驱动。

破坏性 API 变更

v1.6.0 与 v1.7.0 之间用户可见的 API 破坏性变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。

每项变更都标注了其影响等级:

  • minor —— 影响范围窄的 API;仅影响使用过它的脚本。

  • behavior —— API 不变,但结果不同;请重新检查经过调优的脚本。

变更按影响等级依次分组。如果你只想移植代码,可直接跳到末尾的 迁移清单。每个提交哈希都链接到其在 GitHub 上的差异。

fir.init() 现在仅接受关键字参数 (minor)

fir.init() 经过重构,改为接受关键字参数(type= / refresh= / resolution=,默认 refresh 为 64 Hz,最大 512 Hz),而非位置参数。请将位置参数形式的 fir.init(...) 调用更新为关键字形式。

提交: 958c5b7f7

超大帧自动裁剪到 QVGA (behavior)

当原始帧超过开发板的最大原始帧尺寸时,sensor.snapshot() 不再抛出异常——超大原始帧现在会被开窗 / 裁剪到 QVGA(只有 JPEG 模式的原始帧仍会被拒绝)。如果你依赖之前的错误行为,请选择受支持的帧尺寸。

提交: b655a5488abace9e4f

OpenMV 2 的最大帧尺寸降至 QVGA (behavior)

在 OpenMV 2 上,积分图像 / 原始 / 色块的最大帧尺寸已从 VGA 降至 QVGA。现在在 OpenMV 2 上对灰度 / RGB565 / 色块 / 积分图像操作请求 VGA 时,会被裁剪到 QVGA——请重新设计依赖该开发板上 VGA 处理的脚本。

提交: 7499062bd

默认 JPEG 质量下调 (behavior)

默认 JPEG 质量已下调(默认值从 50 → 35,并降低了 IDE 的子采样阈值),以获得更可靠的流式传输。默认情况下,捕获 / 流式传输的 JPEG 图像质量明显更低——如果需要之前的质量,请向 image.compress() 显式传入 quality

提交: d9c8b1535

迁移清单

要顺利移植到 v1.7.0,通常需要做的工作是:

  1. 将位置参数形式的 fir.init(...) 调用转换为关键字形式(fir.init 变更)。

  2. 使用受支持的帧尺寸,而非依赖旧的超大帧错误(超大帧变更),并重新设计 OpenMV 2 上的 VGA 处理(OpenMV 2 帧尺寸变更)。

  3. 如果需要之前的 JPEG 质量,请向 image.compress() 显式传入 qualityJPEG 质量变更)。

其余所有脚本均可原样运行。