• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 使用列表存储图像,先存到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;
      

      10_1740714419078_10_192916.jpg 9_1740714419077_9_192895.jpg 8_1740714419077_8_192874.jpg 7_1740714419077_7_192852.jpg 6_1740714419077_6_192831.jpg 5_1740714419077_5_192809.jpg 4_1740714419077_4_192788.jpg 3_1740714419077_3_192766.jpg 2_1740714419076_2_192745.jpg 1_1740714419076_1_192723.jpg 0_1740714419076_0_192702.jpg
      图片的顺序应该是从下到上的,4.43重复出现,图片都是按时间戳顺序排列的,顺序是从下到上



    • 没有那么大的ram来存多张图片,所以需要及时存到flash中。



    • 此回复已被删除!


    • @kidswong999 因为项目的实时性要求比较高,需要捕捉一段时间的连续图片,拍一张存一张的话,中间会漏很多帧,这种情况还有别的解决思路吗?



    • 你说一下具体要做什么