11浏览
查看: 11|回复: 3

[项目] 【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写

[复制链接]
【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图2

什么是 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视觉识别模块之使用文件读写图1

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图3

驴友花雕  高级技神
 楼主|

发表于 6 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写

知识点
文件读写是程序与外部存储交互的基础操作,用于将数据持久化到磁盘(如保存配置、日志、用户数据)或从磁盘读取数据(如加载文件、解析内容)。不同编程语言的实现语法不同,但核心逻辑一致,通常包括打开文件、操作文件(读 / 写)、关闭文件三个步骤。

核心概念
文件路径:指定文件在存储系统中的位置(绝对路径如C:/data/file.txt,相对路径如./files/log.csv)。
打开模式:决定文件的操作类型,常见模式:
r:只读(默认,文件不存在则报错)。
w:只写(覆盖原有内容,文件不存在则创建)。
a:追加(在文件末尾添加内容,不覆盖原有数据)。
r+/w+/a+:读写混合模式。
二进制模式(如rb/wb):用于非文本文件(图片、音频、二进制数据)。
流(Stream):文件操作通过 “流” 实现,将数据以字节序列的形式传输(读是输入流,写是输出流)。

常见操作场景
1. 文本文件读写(如.txt、.csv)
读文件:按行读取、全部读取,适用于配置文件解析、日志分析等。
写文件:写入字符串、多行内容,适用于保存用户输入、生成报告等。
2. 二进制文件读写(如.png、.zip、.bin)
以字节(byte)为单位操作,适用于处理图片、视频、压缩包等非文本数据。
3. 高效读写
大文件读写时,避免一次性加载到内存(可能导致内存溢出),而是分块读取(如每次读 1024 字节)。
多数语言支持 “上下文管理器”(如 Python 的with语句),自动管理文件关闭,避免资源泄露。

示例(Python 语言)
python
  1. # 1. 写文本文件(覆盖模式)
  2. with open("test.txt", "w", encoding="utf-8") as f:
  3.     f.write("Hello, 文件读写!\n")  # 写入一行
  4.     f.writelines(["第一行\n", "第二行\n"])  # 写入多行
复制代码

  1. # 2. 读文本文件(全部读取)
  2. with open("test.txt", "r", encoding="utf-8") as f:
  3.     content = f.read()  # 读取全部内容
  4.     print(content)
复制代码

  1. # 3. 追加内容
  2. with open("test.txt", "a", encoding="utf-8") as f:
  3.     f.write("这是追加的一行\n")
复制代码

  1. # 4. 二进制文件读写(如复制图片)
  2. with open("source.png", "rb") as src, open("copy.png", "wb") as dst:
  3.     while True:
  4.         chunk = src.read(1024)  # 每次读1024字节
  5.         if not chunk:
  6.             break
  7.         dst.write(chunk)  # 分块写入
复制代码


注意事项
编码问题:文本文件需指定编码(如utf-8、gbk),否则可能出现乱码。
资源释放:必须确保文件操作完成后关闭文件(上下文管理器可自动处理),否则可能导致文件被锁定或数据未完全写入。
异常处理:文件操作可能出现错误(如路径不存在、权限不足),需通过try-except捕获异常。

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 5 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写
项目测试实验代码

  1. #【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写
  2. # 文件写入 - 将数据写入到SD卡中的文件
  3. # File writing - Write data to a file on the SD card
  4. with open('/sdcard/yahboom.txt', 'w') as f:
  5.     # 向文件中写入字符串内容
  6.     # Write string content to the file
  7.     f.write("Hello Yahboom")
  8. # 文件读取 - 从SD卡中的文件读取数据
  9. # File reading - Read data from the file on the SD card
  10. with open('/sdcard/yahboom.txt', 'r') as f:
  11.     # 读取文件全部内容并打印
  12.     # Read all content from the file and print it
  13.     print(f.read())
复制代码


我们用CanMV IDE打开例程代码,将K230用usb线连接到电脑上
在系统的文件管理器中,打开CanMV对应的目录。我们进入 CanMV/sdcard这个目录里面

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图2

CanMV/sdcard/ 目录对应在代码里面就是 /sdcard/

点击CanMV IDE左下角的运行按钮,同时打开下面的串行终端,可以看到这里输出了Hello Yahboom

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图1


等待程序运行结束后,我们再回到文件管理器里面,可以看到这里多出来了一个yahboom.txt文件

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图3


我们双击打开这个文件,里面的内容是“Hello Yahboom”

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图4
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 4 小时前

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写

代码讲解
  1. # 文件写入
  2. with open('/sdcard/yahboom.txt', 'w') as f:
  3.     f.write("Hello Yahboom")
复制代码


  1. # 文件读取
  2. with open('/sdcard/yahboom.txt', 'r') as f:
  3.     print(f.read())
复制代码

我们使用with open as 语法来打开文件系统中的文件
open()方法有两个参数,第一个参数是文件路径,第二个参数是打开模式,
常用的有 r (read,读取模式) 和 w (write, 写入模式)
with open as .... 是一种更为推荐的文件操作方法
with open as 会自动关闭文件,无论代码是否发生异常。退出 with 代码块时,Python 会自动调用文件对象的 close() 方法。
直接使用 open() 需要手动调用 close() 来关闭文件。如果忘记关闭或代码抛出异常,可能会造成资源泄露。

我们可以看一下用与不用的区别

  1. # with open as (推荐使用)
  2. with open('file.txt', 'r') as f:
  3.     content = f.read()
  4. # 文件自动关闭
  5. # 直接使用 open
  6. f = open('file.txt', 'r')
  7. content = f.read()
  8. f.close()  # 需要手动关闭
复制代码



关于文件读写操作
MicroPython 中的文件操作与标准 Python 类似,但功能相对简化。

需要注意的限制:
内存限制:避免一次性读取过大的文件
文件系统:某些开发板可能只支持有限的文件系统功能
路径操作:建议使用简单的相对路径

以下是主要的文件操作方法:

打开文件

  1. <span style="background-color: rgb(255, 255, 255);">#</span>读取模式打开
复制代码

推荐使用 with 语句

  1. with open('test.txt', 'r') as f:
  2.     content = f.read()
复制代码



文件系统操作(补充,在Micropython中不一定完全兼容)

  1. import os
  2. # 列出当前目录文件
  3. os.listdir()
  4. # 检查文件是否存在
  5. os.stat('test.txt')
  6. # 删除文件
  7. os.remove('test.txt')
  8. # 重命名文件
  9. os.rename('old.txt', 'new.txt')
复制代码


实验串口返回情况

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图1

实验场景图

【花雕动手做】CanMV K230 AI视觉识别模块之使用文件读写图2


回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail