使用列表存储图像,先存到sdram,在结束后,全部存入flash中,出现重复图片的问题
-
#此代码用于测试中,测试图片的保存 import time import os,gc import sensor import image import pyb a = 0 # 初始化SDRAM存储图片列表 # 初始化摄像头 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time=2000) MAX_IMAGES = 1000 # 最大存储图像数量 images_list = [] clock = time.clock() # Create a clock object to track the FPS. #将最近一千张图片存入images_list中 def store_image_list(img): global images_list # 维护队列长度 timestamp_str = pyb.millis() images_list.append((img, timestamp_str)) free_ram = gc.mem_free() print("剩余运行内存:", free_ram, "bytes") # 获取时间戳 #def get_timestamp(): #global timestamp_str #pyb.millis() #timestamp = time.localtime() #timestamp_str = "{:02d}-{:02d}-{:02d}-{:03d}".format(timestamp[4], timestamp[5], timestamp[6], pyb.millis() % 1000) #将内存中的图像保存到flash中去 def save_result(): # 保存图片 for idx, (img, timestamp_str) in enumerate(images_list): try: # 生成文件名并保存 filename = "{}_{}.jpg".format(idx,timestamp_str) img.save("/2/" + filename) print(f"Image {idx} saved successfully.") except Exception as e: # 捕获异常并打印错误信息 print(f"Error saving image {idx}: {e}") # 输出保存成功信息 print("Image saving process completed.") free_ram = gc.mem_free() print("剩余运行内存:", free_ram, "bytes") while(True): img = sensor.snapshot() store_image_list(img) if len(images_list) > 20+: print("停止收集") save_result() break;
图片的顺序应该是从下到上的,4.43重复出现,图片都是按时间戳顺序排列的,顺序是从下到上
-
没有那么大的ram来存多张图片,所以需要及时存到flash中。
-
此回复已被删除!
-
@kidswong999 因为项目的实时性要求比较高,需要捕捉一段时间的连续图片,拍一张存一张的话,中间会漏很多帧,这种情况还有别的解决思路吗?
-
你说一下具体要做什么