CanMV K230拍照保存Demo

下面代码实现01Studio CanMV K230开发板按键拍照保存到SD卡。支持连续多次按下按键拍摄图片。

'''
实验名称:按键拍照保存
实验平台:01Studio CanMV K230
说明:实现摄像头图像拍照保存到SD卡,使用v1.2.2以上版本micropython固件。
'''

import time, os, sys
from machine import FPIOA,Pin

from media.sensor import * #导入sensor模块,使用摄像头相关接口
from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入media模块,使用meida相关接口

sensor = Sensor() #构建摄像头对象
sensor.reset() #复位和初始化摄像头
sensor.set_framesize(Sensor.FHD) #设置帧大小FHD(1920x1080),默认通道0
sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0

#使用IDE缓冲区输出图像,显示尺寸和sensor配置一致。
Display.init(Display.VIRT, sensor.width(), sensor.height())

MediaManager.init() #初始化media资源管理器
sensor.run() #启动sensor

time.sleep_ms(200) #等待摄像头稳定

clock = time.clock()

#将GPIO21配置为普通GPIO模式
fpioa = FPIOA()
fpioa.set_function(21,FPIOA.GPIO21)

KEY=Pin(21,Pin.IN,Pin.PULL_UP) #构建KEY对象

state=0 #LED引脚状态
num = 0

while True:

    clock.tick()

    img = sensor.snapshot() #拍摄一张图

    Display.show_image(img) #显示图片

    if KEY.value()==0:   #按键被按下
        time.sleep_ms(10) #消除抖动
        if KEY.value()==0: #确认按键被按下

            state=not state  #使用not语句而非~语句
            LED.value(state) #LED状态翻转
            print('KEY')

            while not KEY.value(): #检测按键是否松开
                pass


            #将当前img图片保存
            img1 = img.crop(roi=(0,0,1920,1080)) #保存图片分辨率可以自行修改,比初始化摄像分辨率小即可
            img1.save('/sdcard/' + str(num) + '.jpg')

            num=num+1 #图片名称用

    print(clock.fps()) #打印FPS