v2.5.0¶
v2.5.0 是一个功能丰富的成像版本:它新增了 find_rects()、find_circles()、get_regression()(直线/回归拟合)、find_number()(LeNet 数字识别)、ImageWriter / ImageReader 流类、sensor.flush() / width() / height(),以及 pyb.RTC 支持。图像加载现在基于帧缓冲区 —— 请阅读下方的破坏性变更。
亮点¶
image.find_rects()—— 矩形 / 四边形检测器,带角点输出。image.find_circles()—— 霍夫圆检测。image.get_regression()—— 最小二乘和稳健(Theil-Sen)直线拟合。image.find_number()—— LeNet 数字识别。ImageWriter/ImageReader—— 记录并回放图像流。pyb.RTC支持,以及sensor.flush()/sensor.width()/sensor.height()。破坏性变更: 图像加载现在基于帧缓冲区,如果图像过大则会抛出异常 —— 请参阅破坏性变更。
新功能¶
特征检测 —— 新增了
image.find_rects()(AprilTag 四边形检测器;矩形对象带有x/y/w/h/corners/magnitude)、image.find_circles()(霍夫)、image.get_regression()(最小二乘 + Theil-Sen 稳健直线拟合),以及image.find_number()(LeNet 数字识别),每项都附带示例脚本。结果角点 —— 为 QR 码 / AprilTag / 数据矩阵 / 条形码结果对象新增了
corners属性。图像流 —— 新增了
image.ImageWriter/image.ImageReader类(16 字节对齐的分块格式),并附带image_writer.py/image_reader.py示例。传感器 —— 新增了
sensor.flush()(将帧缓冲区推送到 IDE 而无需快照)以及sensor.width()/sensor.height()。pyb.RTC—— 启用了 RTC 支持,并附带一个rtc.py示例。新增了一个猫脸 Haar 级联和一个 Servo-Shield(PCA9685)示例;
openmv-cascade.py主机工具新增了对新 OpenCV XML 级联格式的支持。
其他变更与改进¶
对帧缓冲区进行了重构,使
copy_to_fb图像方法能更新 IDE 预览;HaarCascade()路径不再需要前导的/(自动检测是内置级联还是文件);GIF/MJPEG 录制现在支持 VGA(以及 BAYER GIF);更新了内置的README.txt,且在全新文件系统上不再创建openmv.inf驱动文件。
缺陷修复¶
成像:
修复了
find_circles()的投票累加、带 ROI 时get_regression()的 rho 偏移和内存泄漏、find_lines()的线段合并、find_blobs()的角度平均和默认(最不严格)颜色边界、ORB 关键点排序稳定性 / 描述符顺序和匹配标志,以及 Haar 级联缓冲加载(非对齐读取)。
系统:
启用了
pybServo 3(P9)(#256),修复了 RTC 初始化,增加了 UART 字符超时(#240),并修复了未初始化的传感器帧缓冲区 “enabled” 标志。
硬件与开发板支持¶
破坏性 API 变更¶
v2.4.1 与 v2.5.0 之间面向用户的 API 破坏性变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。
该破坏性变更是一项 behavior 变更(API 相同,但结果不同)—— 请重新检查受影响的脚本。每个提交哈希都链接到其在 GitHub 上的差异。
图像加载基于帧缓冲区 (behavior)¶
image.Image / 图像加载现在会将加载的图像复制到主帧缓冲区中,如果图像过大无法容纳则抛出异常。以前能成功加载到堆缓冲区的加载操作现在可能失败 —— 请确保加载的图像能容纳进帧缓冲区(或处理这个新错误)。
提交: 87d53385a
迁移清单¶
在以前依赖堆缓冲区图像加载的地方,请确保加载的图像能容纳进帧缓冲区(或捕获新的 “image too large” 错误)(图像加载变更)。所有其他脚本无需修改即可运行。