【K210视觉模块】使用K210视觉模块,点击按键拍摄照片并保存到SD卡(每轮拍照数可调整)(实测可用)

上代码(实测可用)

1、原理:

为了确保每次拍摄的照片都具有唯一的编号,需要在保存照片之前找到已存在照片文件夹中最大的编号。我定义了一个名为fin_max_num()的函数来实现这个功能。该函数会遍历文件夹中的所有图片文件,并找到最大的编号。通过调用这个函数,我们可以获取最新照片的编号,并在保存照片时生成正确的文件名。

2、注意点:

获取文件夹中的所有文件名的函数中,记得要更新文件路径。我原本是放函数体外面,这样就导致了。只有首次按下,它才会拍一轮照片。后面的都不拍了,因为文件夹中的文件名最大数字没有更新。

import sensor, lcd, time,image,os
from modules import ybkey

#初始化lcd模块
lcd.init()

# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()

#按键
KEY = ybkey()

# 文件夹路径,要自己修改你的路径
folder_path = "/sd/myPhotos"


# 找到最大的数
def fin_max_num():
    max_num = 0
    # 获取文件夹中的所有文件名,记得要更新文件名字
    files = os.listdir(folder_path)
    for file_name in files:
        if file_name.endswith(".jpg"):
            num = int(file_name.split("_")[1].split(".")[0])
            if num > max_num:
                max_num = num
    return max_num

pre_cnt=fin_max_num() #获取当前的图片数量
while True:

    # 获取当前图像,并显示在LCD上
    img = sensor.snapshot()
    lcd.display(img)

    #按键检测,按下则为1
    key_state = KEY.is_press()
    if key_state == 1:
        # 获取最新图片的序号
        new_num = int(fin_max_num()) + 1
        print("-----------the max num is {}------------".format(new_num - 1))
        cnt = 0
        while cnt<10:
            #获取一帧图片
            get_img = sensor.snapshot()

            # 生成文件名
            filename = folder_path + "/image_{}.jpg".format(new_num)

            #文件重命名
            new_num = new_num + 1

            # 按新的文件名保存照片到SD卡
            get_img.save(filename)
            print("saved!!!")

            #记录当前照片数
            pre_cnt=new_num

            # 在LCD上显示拍摄的照片
            lcd.display(get_img)
            cnt=cnt+1
            print("image {} finished worked!".format(pre_cnt-1))

每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

你可能感兴趣的:(#,K210视觉识别模块,python,java,前端)