下面代码实现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