v2.8.0¶
v2.8.0 是一个庞大的版本。它带来了 OpenMV Cam H7(STM32H7),配备 硬件 JPEG 编码器 以及 H7 ADC/DAC,对 image API 进行了大规模改造(绘制线宽 / 填充、数学 / 二值运算、众多新滤波器、Otsu 阈值化),新增了 MicroPython 线程 以及 omv 版本模块。Python 的参数解析顺序被锁定,并移除了 image.mask_ellipse() —— 请阅读下方的破坏性变更。
亮点¶
OpenMV Cam H7 —— 全新的 STM32H7 主板,配备硬件 JPEG 编码器以及 H7 ADC / DAC。
image改造 —— 线宽、形状填充、draw_arrow()/draw_image()、完整的数学 / 二值运算以及众多新滤波器。Otsu 阈值化 ——
histogram.get_threshold()以及Threshold对象。线程 —— MicroPython
_thread支持。omv模块 —— 版本 / 主板信息。破坏性变更: Python 位置参数顺序现在是严格的,并且移除了
image.mask_ellipse()—— 参见破坏性变更。
新功能¶
OpenMV Cam H7 —— STM32H7 主板支持,配备硬件 JPEG 编码器、H7 ADC 以及 H7 DAC。
绘制 —— 新增线条
thickness、形状fill(矩形 / 圆形)、文本scale/ 字距调整、draw_string()上的mono_space关键字、image.draw_arrow()以及image.draw_image()(精灵图 / 掩码绘制)。数学运算 —— 新增
add()、sub()、mul()、div()、min()、max()、difference()、blend()、replace()(带有hmirror/vflip/mask)以及remove_shadows();基本运算现在接受一个应用于所有像素的标量 / 颜色值。二值 / 形态学 —— 新增二值图像类型以及
binary();线条操作以及erode()/dilate()接受掩码;新增open()/close()/top_hat()/black_hat()。滤波器 —— 新增
cartoon、flood_fill、bilateral、laplacian、blur/gaussian_blur别名以及自适应直方图均衡化(histeq(adaptive=, clip_limit=, mask=))。统计 ——
get_statistics()/get_histogram()接受颜色阈值列表以及invert;新增 Otsu 的histogram.get_threshold()以及Threshold对象。CMSIS CNN —— 新增
image.classify_object()以及cnn.py示例(已在 v3.0.0 中被nn模块取代)。线程 —— 启用了 MicroPython
_thread模块。omv模块 —— 新增版本信息(version_string、arch、board_type、board_id);启用了machine的 I2C4 总线以及数学特殊函数(erf、gamma、……);新增了电机扩展板示例以及许多新的示例脚本。
其他变更与改进¶
H7 传感器外部时钟被降至 48 MHz(图像质量更好,FPS 更低);低 / 高 JPEG 质量现在可按主板配置(并针对 H7 进行了调优);新增了按主板的
imlib_config.h功能门控(出厂固件上所有图像功能仍保持启用);更新了捆绑的 MicroPython。
错误修复¶
成像:
修复了
image.save()在无文件扩展名时的问题、OV2640 / OV7725 / OV9650 / MT9V034 的gain_db/gain_db_ceiling映射、sharpen()中增益过大的问题、形态学边缘噪声、图像运算中的除零问题,以及滤波器核尺寸过大导致的栈溢出崩溃(现在变为明确的错误)。
系统:
用原子区段保护了 USB VCP 缓冲区(串行损坏,#313),修复了 Windows 上的 USB 连接问题、SD 卡失败时挂载内部闪存文件系统的问题、
cpufreq的set_frequency()PLLP 值,以及引导加载程序固件烧录的错误。
硬件与主板支持¶
OpenMV Cam H7(STM32H7) —— 全新主板,配备硬件 JPEG 编码器以及 H7 ADC / DAC。
machine—— 启用了 I2C4 总线。
破坏性 API 变更¶
v2.7.0 与 v2.8.0 之间对用户可见的 API 破坏性变更。范围:modules/ 中的 Python C 模块以及 scripts/libraries/ 中的 Python 库。
两项破坏性变更都是 minor,仅影响使用了相关功能的脚本。每个提交哈希都链接到它在 GitHub 上的 diff。
Python 位置参数顺序现在是严格的 (minor)¶
各 Python C 模块(image / sensor / fir / gif / lcd / mjpeg)中的参数解析现在会在关键字之前读取位置参数,并锁定了位置顺序。结合绘制方法上新增的关键字参数(draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() 新增了 thickness / fill / scale / size),那些以位置方式乱序传参的代码 —— 或在某个新参数之后以位置方式传入 color 的代码 —— 必须使用关键字参数或遵循文档中记录的位置顺序。
移除 image.mask_ellipse() (minor)¶
image.mask_ellipse() 已被移除。调用它的脚本必须删除该调用,或改用显式的 ROI / 掩码图像。
提交: d7159fba3
迁移清单¶
请以关键字方式传参(或遵循文档中记录的位置顺序),尤其是绘制方法上的 color(参数顺序变更),并移除 image.mask_ellipse() 调用(mask_ellipse 移除)。所有其他脚本无需修改即可运行。