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



    • import sensor, image, time
      
      sensor.reset() # Initialize the camera sensor.
      sensor.set_pixformat(sensor.RGB565) # use RGB565.
      sensor.set_framesize(sensor.QQVGA) # use QVGA for quailtiy ,use QQVGA for speed.
      sensor.skip_frames(10) # Let new settings take affect.
      sensor.set_auto_whitebal(False)
      #关闭白平衡。白平衡是默认开启的,在颜色识别中,需要关闭白平衡。
      clock = time.clock() # Tracks FPS.
      
      weed_threshold_01 = ((31, 100, -128, -12, 0, 127))
      '''
        扩宽roi
      '''
      def expand_roi(roi):
          # set for QQVGA 160*120
          extra = 5
          win_size = (160, 120)
          (x, y, width, height) = roi
          new_roi = [x-extra, y-extra, width+2*extra, height+2*extra]
      
          if new_roi[0] < 0:
              new_roi[0] = 0
          if new_roi[1] < 0:
              new_roi[1] = 0
          if new_roi[2] > win_size[0]:
              new_roi[2] = win_size[0]
          if new_roi[3] > win_size[1]:
              new_roi[3] = win_size[1]
      
          return tuple(new_roi)
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
      
          blobs = img.find_blobs([weed_threshold_01], area_threshold=150)
          if blobs:
          #如果找到了目标颜色
            #  print(blobs)
              for blob in blobs:
              #迭代找到的目标颜色区域
                  is_rect = False
                  max_area = 0
      
                  new_roi = expand_roi(blob.rect())
                  rects=img.find_rects(roi=new_roi,threshold = 10000)
                  if rects:
                      is_rect=True
                      for rect in rects:
                          print(rects)
                          if rect.w()*rect.h() > max_area:
                              max_area = rect.w()*rect.h()
                              max_circle = rect
                          img.draw_rectangle(max_circle.x(),max_circle.y(),max_circle.w(),max_circle.h())
          print(clock.fps())
      

      0_1568119363793_QQ图片20190910204226.png



    • 我使用OpenMV4测试这个代码,没有出现错误。

      请提供一下出现错误的方法。