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



    • # AprilTags Example
      #
      # This example shows the power of the OpenMV Cam to detect April Tags
      # on the OpenMV Cam M7. The M4 versions cannot detect April Tags.
      
      import sensor, image, time, math
      
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)#GRAYSCALE
      sensor.set_framesize(sensor.QQVGA) # we run out of memory if the resolution is much bigger...
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
      sensor.set_auto_whitebal(False)  # must turn this off to prevent image washout...
      clock = time.clock()
      roi = (0,0,160,120)
      
      tag_families = 0
      tag_families |= image.TAG16H5 # comment out to disable this family
      tag_families |= image.TAG25H7 # comment out to disable this family
      tag_families |= image.TAG25H9 # comment out to disable this family
      tag_families |= image.TAG36H10 # comment out to disable this family
      tag_families |= image.TAG36H11 # comment out to disable this family (default family)
      tag_families |= image.ARTOOLKIT # comment out to disable this family
      
      
      def family_name(tag):
          if(tag.family() == image.TAG16H5):
              return "TAG16H5"
          if(tag.family() == image.TAG25H7):
              return "TAG25H7"
          if(tag.family() == image.TAG25H9):
              return "TAG25H9"
          if(tag.family() == image.TAG36H10):
              return "TAG36H10"
          if(tag.family() == image.TAG36H11):
              return "TAG36H11"
          if(tag.family() == image.ARTOOLKIT):
              return "ARTOOLKIT"
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          apriltags = img.find_apriltags(roi = roi, families=tag_families)
          if apriltags:
              for tag in apriltags:
              # defaults to TAG36H11 without "families".
                  x = tag.cx()-tag.w()//2-5
                  y = tag.cy()-tag.h()//2-5
                  w1 = tag.w()+10
                  h1 = tag.h()+10
                  if x<0:
                      x = 0
                  if y<0:
                      y = 0
                  if w1>80:
                      w1 = 80
                  if h1 >60:
                      h1 = 60
                  del roi
                  roi = (x,y,w1,h1)
                  print("roi:",roi)
                  print("apriltag:",tag.rect())
                  img.draw_rectangle(tag.rect(), color = (255, 0, 0))
                  img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
                  print_args = (family_name(tag), tag.id(), (180 * tag.rotation()) / math.pi)
                  print("Tag Family %s, Tag ID %d, rotation %f (degrees)" % print_args)
          else:
              del roi
              roi = (0,0,80,60)
          print(clock.fps())
      
      

      IDE报错:“MemoryError: Out of fast Frame Buffer Stack Memory! Please reduce the resolution of the image you are running this algorithm on to bypass this issue!”,距离稍微远一点就会报错
      修改分辨率为QQQVGA后同样报错!!!
      求解答🌹 🌹 🌹



    • 我使用OpenMV3和OpenMV4测试了你的代码,都没有出现问题。



    • 摄像头远离AprilTag,当距离增大到某个特定的值,就会出现这个问题,我也不知道是怎么回事



    • 你是用的是OpenMV3还是OpenMV4?