|
6| 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 倍。 ![]() |
|
绘制文字的draw_string_advanced方法 【推荐使用】 draw_string_advanced 增强版 draw_string,支持中文显示,并允许用户通过 font 参数自定义字体。 【不推荐使用】 draw_string 从图像的 (x, y) 位置开始绘制 8x10 大小的文本。参数可以分别传入 x, y,也可以作为元组 (x, y) 一起传递。 text: 要绘制的字符串,换行符 \n、\r 或 \r\n 用于将光标移动到下一行。 color: 表示颜色的 RGB888 元组,适用于灰度或 RGB565 图像,默认为白色。对于灰度图像,还可以传递像素值(范围 0-255);对于 RGB565 图像,可以传递字节翻转的 RGB565 值。 scale: 控制文本的缩放比例,默认为 1。只能为整数。 x_spacing: 调整字符之间的水平间距。正值表示增加间距,负值表示减少。 y_spacing: 调整行之间的垂直间距。正值表示增加间距,负值表示减少。 mono_space: 默认为 True,使字符具有固定宽度。设置为 False 时,字符间距将根据字符宽度动态调整。 该方法返回图像对象,允许通过链式调用其他方法。 不支持压缩图像和 Bayer 格式图像。 项目测试实验代码 |
|
这份代码是基于 CanMV K230 AI 视觉识别模块的文字显示测试程序,核心功能是通过draw_string_advanced()函数在屏幕上绘制不同大小、颜色的中英文文字,展示了 K230 的文本显示能力。以下是相关解读: 一、整体结构 代码分为三个主要部分: 模块导入:引入系统工具和显示相关库 核心函数display_test():实现图像创建、文字绘制、显示控制的完整逻辑 程序入口:启动文字显示测试流程 二、关键代码逐段解读 1. 模块导入与常量定义 python 导入time用于延时控制,os用于系统资源管理,media.display和media.media是 K230 控制显示的核心库,负责驱动屏幕和管理图像资源。 定义显示屏分辨率(640×480),需与实际硬件匹配,否则会导致显示异常。 2. 核心函数display_test() 该函数是程序主体,负责创建图像、绘制文字、初始化显示并处理异常。 (1)创建背景图像 python image.Image():创建图像对象,参数为宽度、高度、像素格式(ARGB8888支持透明通道和 24 位真彩色,色彩还原更细腻)。 img.clear():清空图像缓存(初始为黑色)。 img.draw_rectangle():绘制全屏白色背景,参数包括左上角坐标(0,0)、宽高(屏幕尺寸)、白色(255,255,255)、填充模式fill=True。 (2)初始化显示与媒体资源 python Display.init():初始化显示屏,参数说明: Display.ST7701:指定显示屏驱动芯片型号(此处为 ST7701,需根据实际硬件修改)。 width/height:显示分辨率(需与图像尺寸一致,否则会拉伸或裁剪)。 to_ide=True:支持将显示内容同步到开发工具(如 CanMV IDE),方便调试时在电脑上预览。 MediaManager.init():初始化媒体管理器,负责分配图像缓存、字体库等底层资源,是显示文字的必要步骤(字体资源由该模块管理)。 (3)绘制文字(核心功能) 通过draw_string_advanced()函数绘制中英文文字: python draw_string_advanced()参数详解(核心函数): x, y, size, text, color x, y:文字左上角的坐标(屏幕左上角为原点(0,0),x 向右递增,y 向下递增)。 size:字体大小(数值越大文字越大,此处 130 为大号,30 为中号)。 text:要显示的字符串(支持中英文,需确保 K230 固件包含中文字体库,默认通常支持)。 color:文字颜色,以 RGB 元组表示((红,绿,蓝),值范围 0-255,如(255,0,0)为红色)。 (4)显示图像并保持 python Display.show_image(img):将图像数据发送到物理显示屏,完成显示刷新。 无限循环确保文字持续显示(程序结束后屏幕会关闭)。 (5)异常处理与资源释放 python 异常处理确保程序在意外中断时不会崩溃,便于调试。 资源释放步骤(deinit())是嵌入式开发的关键:硬件设备需显式关闭,否则可能导致下次运行时资源占用冲突。 3. 程序入口 python 当脚本直接运行时,启用系统退出点(用于安全关闭设备),并调用display_test()启动文字显示流程。 三、核心技术点 draw_string_advanced()函数:K230 绘制文字的高级接口,支持自定义大小和颜色,且原生支持中文(依赖固件字体库),适合快速开发带文字交互的界面。 坐标系统:屏幕左上角为原点(0,0),需根据文字大小计算位置,避免超出屏幕范围(如 130 号文字高度较大,需确保 y 坐标足够小)。 资源管理:显示硬件和媒体资源必须通过init()初始化、deinit()释放,否则可能导致设备异常(如屏幕闪烁、程序卡死)。 四、功能总结 该代码通过draw_string_advanced()函数在白色背景上绘制了红色大号中文和蓝色中号英文,验证了 CanMV K230 的文字显示能力,尤其展示了中文支持的便捷性。可作为开发信息提示、人机交互界面的基础示例,实际使用时可调整坐标、大小和颜色以适应需求。 |
沪公网安备31011502402448© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed