【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
前言
本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。
往期的博客讲述了 K210 的感光元件模块 sensor 的配置,机器视觉模块 image 中部分函数的使用(目前是用 find_blobs 函数实现一些寻找不同颜色的目标点,寻找不同颜色的线,后面会更新更多 image 模块中的函数使用方法),按键、LCD、LED的使用,定时器的使用,串口通信的方法,以及如何使用MaixHub平台在线训练模型。
sensor 的学习笔记传送门
【K210】K210学习笔记一——sensor
image 的学习笔记传送门
【K210】K210学习笔记二——image
按键、LCD、LED的使用 的学习笔记传送门
【K210】K210学习笔记三——按键、LCD、LED的使用
定时器的使用传送门
【K210】K210学习笔记四——定时器的使用
串口通信传送门
【K210】K210学习笔记五——串口通信
MaixHub在线模型训练传送门
【K210】K210学习笔记六——MaixHub在线模型训练识别数字
串口通信(往期)传送门
【串口通信】K210与STM32串口通信、K210与OpenMV串口通信
本文着重于如何使用K210拍摄图片,并将图片上传到MaixHub平台进行模型训练。补充一下一些经验心得,比如一些训练参数的设置。
K210准备工作
由于K210的RAM只有8M,为了让运行的模型可以更大,避免出现内存不够的情况,需要刷入小一点的固件,固件及刷固件工具如下,我设置的是0积分免费下载。
固件烧入
将压缩包解压,点开kflash文件夹,双击运行程序。

在打开的程序中点击打开文件,然后选择要刷入的固件。

然后点击下载即可开始刷入固件。

K210如何拍摄照片
准备工作
这里需要用到SD卡,首先需要用读卡器打开SD卡,在SD卡根目录下创建一个名为img的文件夹。

然后将SD卡直接插到K210上即可。

拍摄相关代码定义
导入模块,这里打算用K210上自带的按键KEY进行拍照(该按键自动接到16脚),所以除了必要的感光元件模块以外,还需要引入引脚注册模块,lcd是方便脱机拍照(代码烧入后,可以拿个充电宝或者其他的可以输出5V电压的给K210供电,就可以拿着K210拍照了,不然还要带个笔记本电脑怪麻烦的)。
# Get_V1.0 - By: FITQY - 周五 8 月 26 日 2022
#__________________________________________________________________
# 导入模块
import sensor, time, image # 导入感光元件模块 sensor 跟踪运行时间模块 time 机器视觉模块 image
import utime # 导入延时模块 utime
from fpioa_manager import fm # 从 fpioa_manager 模块中导入 引脚注册模块 fm
from Maix import GPIO # 从 Maix 模块中导入 模块 GPIO
import lcd # 导入 LCD 模块
感光元件的设置,比起之前的设置,只是多了倒数第二行的设置图像大小为224 x 224。
#__________________________________________________________________
# 感光元件设置
sensor.reset() # 重置并初始化感光元件 默认设置为 摄像头频率 24M 不开启双缓冲模式
#sensor.reset(freq=24000000, dual_buff=True) # 设置摄像头频率 24M 开启双缓冲模式 会提高帧率 但内存占用增加
sensor.set_pixformat(sensor.RGB565) # 设置图像格式为 RGB565 (彩色) 除此之外 还可设置格式为 GRAYSCALE 或者 YUV422
sensor.set_framesize(sensor.QVGA) # 设置图像大小为 QVGA (320 x 240) 像素个数 76800 K210最大支持格式为 VGA
sensor.set_auto_exposure(0) # 关闭自动曝光
#sensor.set_auto_exposure(0, exposure=120000) # 设置手动曝光 曝光时间 120000 us
#sensor.set_auto_gain(0) # 关闭画面增益
sensor.set_auto_gain(0, gain_db = 16) # 设置画面增益 16 dB 影响实时画面亮度
sensor.set_auto_whitebal(0) # 关闭RGB自动增益(白平衡)
#sensor.set_auto_whitebal(0, rgb_gain_db = (0,0,0)) # 设置RGB增益 0 0 0 dB 影响画面色彩呈现效果 在 K210 上无法调节增益 初步判定是感光元件 ov2640 无法支持
#sensor.set_contrast(0) # 设置对比度 0 这个参数无法读取 且调这个参数对画面似乎不会产生影响 暂时注释
#sensor.set_brightness(0) # 设置亮度 0 这个参数无法读取 且调这个参数对画面似乎不会产生影响 暂时注释
#sensor.set_saturation(0) # 设置饱和度 0 这个参数无法读取 且调这个参数对画面似乎不会产生影响 暂时注释
sensor.set_vflip(1) # 打开垂直翻转 如果是 01Studio 的 K210 不开启会导致画面方向与运动方向相反
sensor.set_hmirror(1) # 打开水平镜像 如果是 01Studio 的 K210 不开启会导致画面方向与运动方向相反
sensor.set_windowing((224,224)) # 设置图像大小为 224 224
sensor.skip_frames(time = 2000) # 延时跳过2s 等待感光元件稳定
LED的设置,这一步可以没有,我只是用来判断按键有没有被按下才加的这个,我设置的是,如果按键按下的话,LED会切换。
#__________________________________________________________________
# LED的使用
# 注册 LED 引脚
fm.register(14, fm.fpioa.GPIO2, force = True) # 配置 14 脚为 LED_R 强制注册
fm.register(13, fm.fpioa.GPIO1, force = True) # 配置 13 脚为 LED_G 强制注册
fm.register(12, fm.fpioa.GPIO0, force = True) # 配置 12 脚为 LED_B 强制注册
# 创建 LED 对象
LED_R = GPIO(GPIO.GPIO2, GPIO.OUT) # 创建 LED_R 对象
LED_G = GPIO(GPIO.GPIO1, GPIO.OUT) # 创建 LED_G 对象
LED_B = GPIO(GPIO.GPIO0, GPIO.OUT) # 创建 LED_B 对象
# LED控制函数
def LED_Control(led_flag): # LED控制函数 根据传入 led_flag 点亮对应的灯 需要注意的是 0为点亮 1为熄灭
if led_flag == 0: # 传入参数为 0 所有灯打开
LED_R.value(0)
LED_G.value(0)
LED_B.value(0)
elif led_flag == 1: # 传入参数为 1 所有灯关闭
LED_R.value(1)
LED_G.value(1)
LED_B.value(1)
elif led_flag == 2: # 传入参数为 2 红灯常亮
LED_R.value(

本文介绍如何使用K210模块拍摄照片并上传至MaixHub平台进行模型训练,包括代码实现、参数设置及数据增强对识别精度的影响。

465

被折叠的 条评论
为什么被折叠?



