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



    • 0_1558585593125_0002.png



    • 如果涉及代码,需要报错提示与全部代码文本,请注意不要贴代码图片



    • Blob Detection and uart transport

      import sensor, image, time
      from pyb import UART
      import json

      For color tracking to work really well you should ideally be in a very, very,

      very, controlled enviroment where the lighting is constant...

      #red_threshold = (32, 77, -69, 96, 19, 64)
      #green_threshold = (9, 100, -22, -83, 11, 125)
      #blue_threshold = (27, 95, -43, 18, -7, -72)

      red_threshold = (96, 12, 26, 103, 64, -114)
      green_threshold = (100, 3, -13, -66, 49, -29)
      blue_threshold = (100, 0, 70, -80, -65, -4)

      You may need to tweak the above settings for tracking green things...

      Select an area in the Framebuffer to copy the color settings.

      size = 4000

      sensor.reset() # Initialize the camera sensor.
      sensor.set_pixformat(sensor.RGB565) # use RGB565.
      sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
      sensor.skip_frames(10) # Let new settings take affect.
      sensor.set_auto_whitebal(False) # turn this off.
      clock = time.clock() # Tracks FPS.

      yanse=[0]
      a=0
      r=0
      g=0
      b=0

      uart = UART(3, 115200)
      def find_max(blobs):
      max_size=0
      for blob in blobs:
      if blob.pixels() > max_size:
      max_blob=blob
      max_size = blob.pixels()
      return max_blob

      while(True):
      img = sensor.snapshot() # Take a picture and return the image.

      blobsr = img.find_blobs([red_threshold])
      blobsg = img.find_blobs([green_threshold])
      blobsb = img.find_blobs([blue_threshold])
      if r==0:
          if blobsr:
              max_blob=find_max(blobsr)
              if max_blob.pixels()>size:
                  yanse.append(1)
                  uart.write("1")
                  r=1
                  img.draw_rectangle(max_blob.rect())
                  img.draw_cross(max_blob.cx(), max_blob.cy())
      if g==0:
          if blobsg:
              max_blob=find_max(blobsg)
              if max_blob.pixels()>size:
                  yanse.append(2)
                  uart.write("2")
                  g=1
                  img.draw_rectangle(max_blob.rect())
                  img.draw_cross(max_blob.cx(), max_blob.cy())
      if b==0:
          if blobsb:
              max_blob=find_max(blobsb)
              if max_blob.pixels()>size:
                  yanse.append(3)
                  uart.write("3")
                  b=1
                  img.draw_rectangle(max_blob.rect())
                  img.draw_cross(max_blob.cx(), max_blob.cy())
      
      
      if r==1:
          if g==1:
              if b==1:
                  a=yanse[1]*100+yanse[2]*10+yanse[3]
                  print('you send:',r,g,b,a)


    • 我运行这个代码没有出现错误。

      请提供你的OpenMV硬件版本,固件版本,和IDE的版本。



    • 只是有时会出现报错,有时不会
      硬件是Openmv m3



    • @15955215165 请提供可以复现问题的步骤。