Maix bit K210怎么拍照存储到sd卡上面

前言:在搞模型训练的时候,发现一张一张照片找,一张一张保存,就感觉好麻烦,就想着我能不能直接拍照呢,然后就写代码到板子上面,直接拍照存储到sd上面,进行模型训练的时候就直接从sd卡上传照片,简单便捷。

目录

一、关键部分代码详细解析

1.检查SD卡是否挂载,并且读取照片数量

2.配置按键中断

3.存储照片到sd卡

 二、代码展示


一、关键部分代码详细解析

1.检查SD卡是否挂载,并且读取照片数量

if 'sd' in os.listdir('/'):
    # 列出SD卡中图片目录下的所有文件
    image_files = [f for f in os.listdir('/sd/pic') if f.endswith('.jpg')]
    # 计算图片文件数量
    count = len(image_files)
    print("Number of images:", count)
else:
    print("SD card not mounted")

功能:找出sd卡的所有文件,找到sd卡里面的pic文件(是我在sd卡新建用来放照片的文件),然后读取照片数量,为什么要读取呢,因为我在代码给图片命名是以img[count].jpg的格式,count代表图片个数,需要找到图片个数,才能给下一张图片命名(变量count+1),但是count是在程序定义的变量(掉电会丢失数据)断电重启又会从0开始,因此我们在程序开头读取照片个数并赋值给count,就算断电了也能知道pic文件里面照片的个数,并继续保存图片到sd卡,如下图

2.配置按键中断

# 按键配置
fm.register(board_info.BOOT_KEY, fm.fpioa.GPIOHS0)  # 注册按键GPIO
key_gpio = GPIO(GPIO.GPIOHS0, GPIO.IN)  # 初始化按键GPIO为输入
start_processing = False  # 按键按下标志
 
BOUNCE_PROTECTION = 50  # 按键抖动保护时间(毫秒)
# 按键中断服务程序
def set_key_state(*_):
    global start_processing  #告诉函数start_processing是全局变量
    start_processing = True  # 设置按键按下标志为True
    utime.sleep_ms(BOUNCE_PROTECTION)# 等待以消除按键抖动
 
key_gpio.irq(set_key_state, GPIO.IRQ_RISING, GPIO.WAKEUP_NOT_SUPPORT)# 设置按键中断  

  功能:配置BOOT按键,每次按下一次就拍一张照片定义全局变量标志位 start_processing,    在主程序判断是否按下按键

 

3.存储照片到sd卡

img.save("/sd/pic/img{}.jpg".format(count))  # 保存图片到SD卡

  需导入image库才能使用img.save语句  

  /sd/pic代表存储路径

  img{}.jpg代表照片以这样的方式命名

 二、代码展示

import sensor,image,lcd  # 导入相关库
from board import board_info  # 导入开发板信息
import os
from Maix import FPIOA,GPIO   # 导入FPIOA和GPIO库
from fpioa_manager import fm  # 导入fpioa_manager库
import time
import utime
 
# 按键配置
fm.register(board_info.BOOT_KEY, fm.fpioa.GPIOHS0)  # 注册按键GPIO
key_gpio = GPIO(GPIO.GPIOHS0, GPIO.IN)  # 初始化按键GPIO为输入
start_processing = False  # 按键按下标志
 
BOUNCE_PROTECTION = 50  # 按键抖动保护时间(毫秒)
# 按键中断服务程序
def set_key_state(*_):
    global start_processing  #告诉函数start_processing是全局变量
    start_processing = True  # 设置按键按下标志为True
    utime.sleep_ms(BOUNCE_PROTECTION)# 等待以消除按键抖动
 
key_gpio.irq(set_key_state, GPIO.IRQ_RISING, GPIO.WAKEUP_NOT_SUPPORT)# 设置按键中断         
clock = time.clock()  # 初始化系统时钟,计算帧率
lcd.init() # 初始化lcd
sensor.reset() #初始化sensor 摄像头
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(1) #设置摄像头镜像Q
sensor.set_vflip(1)   #设置摄像头翻转
lcd.rotation()
sensor.run(1) #使能摄像头
# 检查SD卡是否挂载
if 'sd' in os.listdir('/'):
    # 列出SD卡中图片目录下的所有文件
    image_files = [f for f in os.listdir('/sd/pic') if f.endswith('.jpg')]
    # 计算图片文件数量
    count = len(image_files)
    print("Number of images:", count)
else:
    print("SD card not mounted")
while(1): # 主循环
    img = sensor.snapshot()#从摄像头获取一张图片
    clock.tick() #记录时刻,用于计算帧率
    img.draw_string(0, 200, "%d" %(count), scale=1, color=(255, 0, 0))
    if start_processing:#识别到按键按下      
        img.save("/sd/pic/img{}.jpg".format(count))  # 保存图片到SD卡
        count+=1
        start_processing = False         
    a = lcd.display(img) #刷屏显示

 总结:以上就是保存照片到sd卡的教程,有帮助的兄弟点赞支持,欢迎评论区讨论 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值