12浏览
查看: 12|回复: 4

[项目] 【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示

[复制链接]
【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图3

什么是 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 倍。


【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图2

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图1

驴友花雕  高级技神
 楼主|

发表于 5 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示

知识点
图像显示是指将电子信号转换为视觉图像的技术,广泛应用于电视、电脑、手机等各种电子设备中。以下是关于图像显示的详细介绍:

1、图像显示原理
不同的显示技术其原理有所不同,常见的显示技术原理如下:
LCD(液晶显示):通过液晶分子的电光效应来控制光线的透射率。LCD 由两片玻璃板夹持液晶层,液晶分子在无电场作用时呈螺旋排列,允许光线通过;施加电场时,液晶分子沿电场方向排列,改变光线的偏振状态,从而控制光线的透过或阻挡,形成图像。
OLED(有机发光二极管显示):利用有机材料在电场作用下发光的特性。OLED 的每个像素由红、绿、蓝三种发光材料组成,通过控制电流比例可生成各种颜色。其结构通常包括阳极、阴极和多层有机薄膜,电子和空穴注入、传输、复合形成激子,激子辐射退激发出光子,实现图像显示。
LED 显示:利用发光二极管发光,通过将大量的 LED 组合在一起来显示图像。其中,Mini LED 适用于 LCD 背光和小间距显示屏,Micro LED 采用自发光技术,无需背光源,具有更高的亮度、更广的色域和更快的响应时间。
DLP(数字光处理):利用数字微镜器件(DMD)来控制光线的反射。DMD 芯片由数百万个微小镜面组成,每个镜面可以独立翻转,以控制光线的反射或吸收,结合色轮快速切换红、绿、蓝三种颜色的光,合成彩色图像。

2、图像类型
灰度图像:也叫单通道图像,用不同饱和度的黑色来表示每个图像点,每个像素点只需要一个灰度值,取值范围通常是 0-255。
彩色图像:多通道图像,常见的如 RGB 彩色图像,由 R(红色)、G(绿色)、B(蓝色)三原色按比例混合而成,每个像素需要 3 个值来表示。还有 RGBA 格式,在 RGB 基础上增加了 Alpha 通道,用于控制图像的透明度。
二值化图像:将像素值简化成黑白两色,通过阈值分割实现,像素值通常为 0(黑)或 255(白)。

3、图像显示技术的应用领域
消费电子:广泛应用于手机、电脑、电视等设备的屏幕,为用户提供清晰、色彩鲜艳的视觉体验。
医疗成像:如 X 光、CT、MRI 等医学影像设备,通过图像显示技术将人体内部结构以可视化的方式呈现给医生,辅助诊断疾病。
卫星遥感:用于显示卫星拍摄的地球表面图像,帮助科学家进行地理信息分析、环境监测等。
虚拟现实与增强现实:为用户提供沉浸式的视觉体验,使虚拟场景和现实场景能够以图像的形式呈现给用户。

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图2

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图1

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图3

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 5 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示

我们用CanMV IDE打开例程代码,将K230用USB线连接到电脑上

这里需要准备PNG格式的图片

按照手册描述jpeg格式的图片也可以,但实际测试发现效果没有PNG格式的图片好,可以先把想要显示的图片转换为PNG

这里已经准备好了二张图片,路径如下【/sdcard/resources/wp.png】

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图2

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图1

我们打开例程代码,点击左下角的运行按钮,可以看到屏幕上(和帧缓冲区里)会显示出我们准备好的图片

*注:图片的尺寸不能超过Display显示设备的尺寸限制,如果使用配套屏幕,则分辨率要限制在 640x480

*位深为8的PNG图像无法正常加载,IDE会报错:RuntimeError: given output image colortype or bitdepth not supported for color conversion

可以使用我们资料里提供的PNG位深转换器来转换图片的位深为24或32

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图3

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图4

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 5 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示
项目测试实验代码

  1. #【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示
  2. # 导入显示相关模块
  3. # Import display related modules
  4. from media.display import *
  5. from media.media import *
  6. # 导入图像处理模块和时间模块
  7. # Import image processing module and time module
  8. import image, time
  9. # 初始化ST7701显示屏
  10. # Initialize ST7701 display
  11. # 参数说明:
  12. # Display.ST7701 - 显示屏类型
  13. # width=640, height=480 - 显示分辨率
  14. # osd_num=1 - OSD层数量
  15. # to_ide=True - 同时输出到IDE显示
  16. Display.init(Display.ST7701, width=640, height=480, osd_num=1, to_ide=True)
  17. # 如果没有选配屏幕,则使用这一条初始化代码:
  18. # If no physical screen is configured, use this initialization code:
  19. # Display.init(Display.VIRT, width=1920, height=1080)
  20. # 从SD卡加载图像文件
  21. # Load image file from SD card
  22. # "/sdcard/resources/wp.png" - 图像文件路径
  23. # copy_to_fb=True - 复制到帧缓冲区,用于显示
  24. img = image.Image("/sdcard/resources/wp.png", copy_to_fb=True)
  25. # 初始化媒体管理器
  26. # Initialize media manager
  27. MediaManager.init()
  28. # 这里必须将png图片转换为rgb888或rgb565,否则无法显示
  29. # Must convert PNG image to rgb888 or rgb565 format, otherwise it cannot be displayed
  30. img = img.to_rgb888()
  31. # 在显示屏上显示图像
  32. # Display image on the screen
  33. Display.show_image(img)
  34. # 主循环,保持程序运行
  35. # Main loop to keep the program running
  36. while True:
  37.     pass  # 空操作,保持程序不退出
复制代码

Image 模块
Image 类是机器视觉处理中的基础对象。此类支持从 Micropython GC、MMZ、系统堆、VB 区域等内存区域创建图像对象。此外,还可以通过引用外部内存直接创建图像(ALLOC_REF)。未使用的图像对象会在垃圾回收时自动释放,也可以手动释放内存。

支持的图像格式如下:

BINARY
GRAYSCALE
RGB565
BAYER
YUV422
JPEG
PNG
ARGB8888(新增)
RGB888(新增)
RGBP888(新增)
YUV420(新增)

支持的内存分配区域:

ALLOC_MPGC:Micropython 管理的内存
ALLOC_HEAP:系统堆内存
ALLOC_MMZ:多媒体内存
ALLOC_VB:视频缓冲区
ALLOC_REF:使用引用对象的内存,不分配新内存

构造函数
  1. image.Image(path, alloc=ALLOC_MMZ, cache=True, phyaddr=0, virtaddr=0, poolid=0, data=None)
复制代码

从文件路径 path 创建图像对象,支持 BMP、PGM、PPM、JPG、JPEG 格式。

  1. image.Image(w, h, format, alloc=ALLOC_MMZ, cache=True, phyaddr=0, virtaddr=0, poolid=0, data=None)
复制代码

创建指定大小和格式的图像对象。

w:图像宽度
h:图像高度
format:图像格式
alloc:内存分配方式(默认 ALLOC_MMZ)
cache:是否启用内存缓存(默认启用)
phyaddr:物理内存地址,仅适用于 VB 区域
virtaddr:虚拟内存地址,仅适用于 VB 区域
poolid:VB 区域的池 ID,仅适用于 VB 区域
data:引用外部数据对象(可选)

示例:

  1. # 在 MMZ 区域创建 ARGB8888 格式的 640x480 图像
  2. img = image.Image(640, 480, image.ARGB8888)
  3. # 在 VB 区域创建 YUV420 格式的 640x480 图像
  4. img = image.Image(640, 480, image.YUV420, alloc=image.ALLOC_VB, phyaddr=xxx, virtaddr=xxx, poolid=xxx)
  5. # 使用外部引用创建 RGB888 格式的 640x480 图像
  6. img = image.Image(640, 480, image.RGB888, alloc=image.ALLOC_REF, data=buffer_obj)
复制代码

手动释放图像内存:

  1. del img
  2. gc.collect()
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 5 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示

实验场景图

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图1

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图2

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图3

【花雕动手做】CanMV K230 AI视觉识别模块之使用图像显示图4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail