K230 训练数据集 拍照保存
import time, os, sys
from media.sensor import *
from media.display import *
from media.media import *
from machine import Pin
# 初始化退出点检测
os.exitpoint(os.EXITPOINT_ENABLE)
# 创建照片保存目录(如果不存在)
photo_dir = "/data/LIXING/"
if not os.path.exists(photo_dir):
os.makedirs(photo_dir)
# 配置按键输入 (下拉模式,按下时变为高电平)
usr = Pin(53, Pin.IN, Pin.PULL_DOWN)
try:
# 初始化摄像头传感器
sensor = Sensor()
sensor.reset()
# 主显示通道配置 (800x480 YUV420SP)
sensor.set_framesize(width=800, height=480)
sensor.set_pixformat(Sensor.YUV420SP)
# 绑定显示层
bind_info = sensor.bind_info()
Display.bind_layer(**bind_info, layer=Display.LAYER_VIDEO1)
# 拍摄通道配置 (320x320 RGB565)
sensor.set_framesize(Sensor.B320X320, chn=CAM_CHN_ID_1)
sensor.set_pixformat(Sensor.RGB565, chn=CAM_CHN_ID_1)
# 初始化3.1寸屏幕
Display.init(Display.ST7701)
MediaManager.init()
sensor.run()
print("系统启动完成,等待按键拍照...")
# 防止按键抖动
last_press_time = 0
debounce_delay = 500 # 500ms防抖延时
while True:
os.exitpoint() # 检查退出信号
current_time = time.ticks_ms()
# 检测按键按下(高电平)
if usr.value() == 1:
# 防抖处理:确保两次拍照间隔大于debounce_delay
if time.ticks_diff(current_time, last_press_time) > debounce_delay:
last_press_time = current_time
try:
# 从通道1获取RGB565图像
img = sensor.snapshot(chn=CAM_CHN_ID_1)
# 生成唯一文件名(基于时间戳)
timestamp = time.localtime()
filename = f"/data/LIXING/photo_{timestamp[0]}{timestamp[1]:02d}{timestamp[2]:02d}_{timestamp[3]}{timestamp[4]}{timestamp[5]:02d}.jpg"
# 保存图像
img.save(filename)
print(f"照片已保存: {filename}")
# 显示成功提示
Display.draw_string(100, 100, "拍照成功!", color=(255, 0, 0), scale=3)
time.sleep_ms(1000) # 显示1秒
except Exception as e:
print(f"拍照失败: {e}")
# 显示错误提示
Display.draw_string(100, 100, "拍照失败!", color=(255, 0, 0), scale=3)
time.sleep_ms(1000)
time.sleep_ms(10) # 降低CPU占用
except KeyboardInterrupt:
print("用户中断程序")
except Exception as e:
print(f"系统异常: {e}")
finally:
# 清理资源
if 'sensor' in locals():
sensor.stop()
Display.deinit()
MediaManager.deinit()
os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
time.sleep_ms(100)
print("系统已关闭")
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)