|
77| 3
|
[项目] 【花雕动手做】CanMV K230 AI视觉模块之绘制一个圆形图案 |
![]() ![]() 什么是 CanMV K230? CanMV K230是一款高性价比的RISC-V边缘AI平台,凭借低功耗、强视觉处理能力和开放的开发生态,成为嵌入式AI开发的理想选择,尤其适合需要快速部署视觉与AI功能的创客、中小企业及教育场景。CanMV 是一套 AI 视觉开发平台,K230 是其核心芯片。该模块结合了图像采集、AI推理、边缘计算等能力,适合嵌入式视觉应用开发。 CanMV:类似 OpenMV 的图像处理框架,支持 Python 编程,简化视觉识别开发流程。 K230 芯片:嘉楠科技推出的 AIoT SoC,采用 RISC-V 架构,内置第三代 KPU(AI加速单元),算力高达 6 TOPS,性能是 K210 的 13.7 倍。 ![]() ![]() |
|
API 文档 draw_circle 在图像上绘制一个圆形。参数可以分别传入 x, y, radius,也可以作为元组 (x, y, radius) 一起传递。 color: 表示颜色的 RGB888 元组,适用于灰度或 RGB565 图像,默认为白色。对于灰度图像,还可以传递像素值(范围 0-255);对于 RGB565 图像,可以传递字节翻转的 RGB565 值。 thickness: 控制圆形边框的像素宽度,默认为 1。 fill: 设置为 True 时,将填充圆形内部,默认为 False。 该方法返回图像对象,允许通过链式调用其他方法。 【花雕动手做】CanMV K230 AI 视觉识别模块之使用draw_circle方法绘制圆形 测试实验代码 |
|
代码解读 一、核心功能解析 1. 图形绘制逻辑 程序通过draw_circle()方法实现分层圆形图案绘制,模拟汽车轮毂结构: 主轮廓:双层同心圆(外圈150px/内圈130px) 中心轮毂:三层结构(灰色填充盘+深灰边框+黑色中心点) 辐条系统:8根辐条通过计算圆上坐标实现均匀分布 装饰细节:16个螺栓孔围绕主轮廓分布 2. 数学计算关键点 python 使用三角函数将极坐标转换为屏幕像素坐标 角度需先转换为弧度(math.radians()) 坐标取整处理(int())确保像素对齐 3. 显示控制流程 创建画布 → 2. 绘制图形 → 3. 初始化硬件 → 4. 显示输出 → 5. 异常处理 → 6. 资源释放 二、技术实现亮点 1. 硬件抽象层设计 通过Display.init()和MediaManager.init()实现硬件解耦 支持ST7701驱动芯片的显示器 使用os.exitpoint()管理低功耗模式 2. 图形渲染优化 ARGB8888格式支持透明度(虽未使用alpha通道) 分层绘制策略:先背景后前景,避免重复渲染 装饰元素使用填充圆点提升视觉效果 3. 异常安全机制 python 捕获Ctrl+C中断和系统异常 显式调用反初始化方法释放硬件资源 100ms延时确保硬件稳定 三、扩展应用建议 1. 动态效果实现 python 2. 交互功能扩展 python 3. 性能优化方向 使用图像缓冲区减少重复计算 对静态元素预渲染到位图 采用差分更新机制(仅刷新变化区域) 四、潜在问题排查 显示异常: 检查to_ide=True参数是否与实际硬件匹配 确认分辨率常量与显示器物理尺寸一致 内存不足: ARGB8888格式占用内存较大(640×480×4字节) 可改用RGB565格式减少内存占用 坐标错位: 确保三角函数计算后取整 检查显示器方向设置(可能需要坐标变换) 五、代码结构示意图 main() ├─ 初始化阶段 │ ├─ 创建画布 │ ├─ 硬件初始化 │ └─ 绘制白色背景 ├─ 图形渲染 │ ├─ 主轮廓(双圆) │ ├─ 中心轮毂(三层) │ ├─ 辐条系统(8根) │ └─ 装饰螺栓(16个) ├─ 显示输出 │ └─ 图像刷新 └─ 资源释放 ├─ 显示器反初始化 └─ 媒体管理器释放 |
沪公网安备31011502402448© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed