当前位置: 首页 > news >正文

小白学习机械视觉笔记(四)图像

之前在计算机方面对图像的了解只是接触过图像文件,如JPG文件、PNG文件等,现在通过学习有了更深入的理解。
图像文件是作为CANMV K230模块对外交互的一个接口,需模块内部工作更多是由图像对象和图像数组完成的。
图像对象是指image.Image类(CanMV 自定义类),是 CanMV 中机器视觉处理的核心类,封装了丰富的图像操作方法和函数,支持绘图、编码保存、格式转换、特征检测等丰富操作。
图像数组是指ulab.numpy.ndarray类型的图像数据,支持数值计算(切片、数学运算),可以直接喂给 KPU 模型进行推理。说什么“KPU是神经网络处理器,可以在低功耗的情况下实现卷积神经网络计算”,我都不太理解,我感觉KPU就是一个张量的硬件处理器,因为他的输入输出都为张量——tensor数据。看在这我又撞见了“张量”,张量是多维数组,而ulab.numpy.ndarray是为micropython简化而来的二维数组,在 K230 的 CanMV 环境中,ulab.numpy.ndarray 实际上充当了 tensor 的角色,在 K230 上,ulab.numpy.ndarray 就是你打交道最多的"张量"类型。ulab.numpy.ndarray也有严重的缺点,它本质上是纯数值矩阵,不能直接用于读取或保存图像文件(如 JPG、PNG)。它也不支持直接进行图像绘制(如画框、写字)等高层语义操作。所以在后期想把AI2d处理结果看一下,废了不少劲。
说到图像,还想说几句关于图像显示的 OSD。以前不知道 OSD 是什么,现在觉得这个做法真是很聪明,可以很方便地对原始图像进行二次加工。
下面记录一些图像方面的坑和经验:
1.运行

img_obj=image.Image(480,800,image.RGBP888,alloc=image.ALLOC_REF,data=img)img_obj.save("/sdcard/output.bmp")

提示
OSError: current format not support save function!
也就是image.RGBP888格式的图像对象不能保存成图形文件。
2.使用img.rotation_corr()旋转图像画布不跟着旋转,致使旋转后的图像画面不完整。
3.记录一个NCHW或CHW转img对象函数

defnchw2img(w,h,nchw):ifhasattr(nchw,'to_numpy'):# 如果不是 ndarray(比如是 Tensor),就调用.to_numpy()转换 ai2d_output_np=nchw.to_numpy()#ai2d_output_np=nchw.to_numpy()# 类型转换print(ai2d_output_np.shape)# 预处理后的shape为[1,3,256,256]# 使用transpose处理输出为HWC排布的np数据,然后在np数据上创建RGB888格式的Image实例用于在IDE显示效果 shape=ai2d_output_np.shape ai2d_output_tmp=ai2d_output_np.reshape((shape[0]*shape[1],shape[2]*shape[3]))ai2d_output_tmp_trans=ai2d_output_tmp.transpose()ai2d_output_hwc=ai2d_output_tmp_trans.copy().reshape((shape[2],shape[3],shape[1]))#out_img=image.Image(256,256,image.RGB888,alloc=image.ALLOC_REF,data=ai2d_output_hwc)out_img=image.Image(w,h,image.RGB888,alloc=image.ALLOC_REF,data=ai2d_output_hwc)else:# 如果类型完全匹配 np.ndarray,说明已经是普通数组了,直接用 ai2d_output_np=nchw#ai2d_output_np=nchw.to_numpy()# 类型转换print(ai2d_output_np.shape)# 预处理后的shape为[3,256,256]# 使用transpose处理输出为HWC排布的np数据,然后在np数据上创建RGB888格式的Image实例用于在IDE显示效果 shape=ai2d_output_np.shape ai2d_output_tmp=ai2d_output_np.reshape((shape[0],shape[1]*shape[2]))ai2d_output_tmp_trans=ai2d_output_tmp.transpose()ai2d_output_hwc=ai2d_output_tmp_trans.copy().reshape((shape[1],shape[2],shape[0]))#out_img=image.Image(256,256,image.RGB888,alloc=image.ALLOC_REF,data=ai2d_output_hwc)out_img=image.Image(w,h,image.RGB888,alloc=image.ALLOC_REF,data=ai2d_output_hwc)returnout_img

4.AIBase 模块 API 手册 — CanMV K230
对于开发中常见的数据类型转换,这里给出对应的示例供参考。
Tips:
Image对象转ulab.numpy.ndarray:

importimageimg.to_rgb888().to_numpy_ref()#返回的array是HWC排布

ulab.numpy.ndarray转Image对象:

importulab.numpyas npimportimageimg_np=np.zeros((height,width,4),dtype=np.uint8)img=image.Image(width,height,image.ARGB8888,alloc=image.ALLOC_REF,data=img_np)

ulab.numpy.ndarray转tensor类型:

importulab.numpyas npimportnncase_runtimeas nn img_np=np.zeros((height,width,4),dtype=np.uint8)tensor=nn.from_numpy(img_np)

tensor 类型转ulab.numpy.ndarray:

importulab.numpyas npimportnncase_runtimeas nn img_np=tensor.to_numpy()
http://www.gsyq.cn/news/1492656.html

相关文章:

  • 如何用VRM-Addon-for-Blender插件快速实现3D模型转换:新手完整指南
  • 谁说专业投票很难做?云众评选小白也能上手(免费+防刷+模板) - 微信投票小程序
  • Java在线考试系统源码:Spring Boot后端+Vue3前端,支持智能组卷与双模式阅卷
  • 淮南劳力士+欧米茄手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 2026年6月最新版苏州第三方CMACNAS甲醛检测治理口碑名单:万清CMA检测中心等5家深度测评 - 一休咨询
  • 激活 Change Pointers,让 SAP HR OM 模型只分发变化而不是重发整棵组织树
  • Bili23 Downloader 技术解析:B站流媒体架构与API交互机制研究
  • 黄冈美度天梭+宝玑手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 双喜临门|腾视科技杭州总部及深圳子公司乔迁新址,以全新姿态奔赴新征程!
  • 别再让雷劈了你的设备!手把手教你为RS485接口选配TVS、GDT和TBU(附IEC标准解读)
  • 终极免费指南:如何用Wand-Enhancer解锁WeMod完整专业功能
  • 重大升级|大家反映配置最复杂的“会务报名”也变成“点哪儿改哪儿”啦!
  • 莲湖区家政公司选型:防水补漏、通马桶与保姆月嫂护工参考 - 资讯速览
  • 国科安芯推出商业航天级抗辐照半双工RS-485/RS-422收发器 ASC485S2Y
  • 31851个成语结构化数据集:带拼音、释义、古籍出处和现代例句,支持Excel/文本/数据库直接导入
  • Applite:如何让Mac软件管理变得像App Store一样简单?
  • 本地钻石回收老店,合扬深耕行业,青岛出价高于同行 - 奢侈品交易观察员
  • laravel的Middleware 的源码解读的庖丁解牛
  • 数据结构:双向循环链表的实现
  • 莲湖区家政公司测评:住家白班保姆、家庭管家与便民服务参考 - 资讯速览
  • 如何在3分钟内为Word安装APA第7版参考文献格式:免费终极指南
  • Wireshark 零基础教程:从安装到首次抓包(进阶学习路线第一期)
  • 别再只用图数据库了!实战复盘:如何用AbutionGraph时序图数仓,一站式搞定公安经侦的“资金链”分析难题
  • 项目名称太长,导致隐藏
  • 【2026】不锈钢水箱选购全攻略:全国优质厂家口碑盘点与性价比分析 - 品研笔录
  • 原材料涨价挤压利润空间,中国轮胎行业进入价值竞争时代
  • 基于PCAP解析的CNN-LSTM流量分类工具包(含训练数据、可运行代码与技术报告)
  • MATLAB可直接运行的15个智能优化算法实例(含PSO、GA及LQR参数调优)
  • 利用 AI 选座,花小钱办大事!
  • WSA安装后别急着关!这样设置能让你的安卓App在Win11上跑得更快更省电