星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • openmv4 H7 内存问题



    • 我用的openmv4 H7 ,官网介绍有1M的ram,我用VGA灰度方式读图片,然后在图片里寻找圆,会报内存溢出。
      计算一下VGA是640*480,灰度一个字节,大概是300K,远远小于1M。手册上介绍说只有100K的缓冲区,有一个sensor.alloc_extra_fb(width, he0_1621390029793_1621389992(1).jpg ight, pixformat)函数重新分配缓冲区。这一个怎么用?

      import sensor, image, time
      
      rect = (0, 0, 340, 240)
      
      sensor.reset()                      # Reset and initialize the sensor.
      sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to RGB565 (or GRAYSCALE)
      sensor.set_framesize(sensor.VGA)   # Set frame size to QVGA (320x240)
      sensor.alloc_extra_fb(640, 480, sensor.GRAYSCALE)
      
      #sensor.set_windowing(rect)
      
      sensor.skip_frames(time = 2000)     # Wait for settings take effect.
      
      
      while(True):
          
          img = sensor.snapshot()         # Take a picture and return the image.
                                      # to the IDE. The FPS should increase once disconnected.
          for c in img.find_circles(roi=rect, x_stride=2, y_stride=1,threshold = 3800, x_margin = 10,
          y_margin = 10, r_margin = 10,r_min = 110, r_max = 120, r_step = 2):
              img.draw_circle(c.x(), c.y(), c.r(), color = 255)
          
      


    • 关于内存分配:
      https://singtown.com/product/50302/openmv-cam-h7/
      看RAM Layout,

      256KB .DATA/.BSS/Heap/Stack
      512KB Frame Buffer/Stack
      256 KB DMA Buffers
      (1MB Total)



    • find_circles在OpenMV4 H7上,最大只能使用QVGA GRAYSCALE。否则内存就不够用



    • 如果你要用VGA和find_circles的话,只能用OpenMV4 H7 Plus了。