• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 为什么我识别橙红色的时候,把白色也识别出来了?看图中颜色区域为橙红色,而串行终端输出了白色和橙红色,求解答谢谢



    • import sensor, image, time , math , pyb
      from pyb import UART
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False)
      sensor.set_auto_whitebal(False)
      clock = time.clock()
      a1=0
      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1)
      
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob[2]*blob[3] > max_size:
                  max_blob = blob
                  max_size = blob[2]*blob[3]
          return max_blob
      
      
      red_threshold_01 = ((82, 36, 63, 23, 63, 28));
      white_threshold_01 = ((75, 100, -18, 2, -4, 23));
      pink_threshold_01 = ((48, 100, 5, 127, -25, 12));
      
      
      while(True):
          clock.tick()
          img = sensor.snapshot().lens_corr(1.8)
          blobs = img.find_blobs([red_threshold_01], pixels_threshold=150, area_threshold=500, merge=True, margin=10);
      
          if blobs:
          #如果找到了目标颜色
              print("ored")
              max_blob_0 = find_max(blobs)
              for b in blobs:
                  x = b[0]
                  y = b[1]
                  width = b[2]
                  height = b[3]
      
                  img.draw_rectangle(max_blob_0.rect())
                  #用矩形标记出目标颜色区域
                  img.draw_cross(max_blob_0.cx(), max_blob_0.cy())
                  #在目标颜色区域的中心画十字形标记
                  print(b[5],b[6],b[7])
                  X =int(max_blob_0.cx()-img.width()/2)
                  Y =int(max_blob_0.cy()-img.height()/2)
      
          blobs = img.find_blobs([white_threshold_01], pixels_threshold=100, area_threshold=200, merge=True, margin=10);
          if blobs:
      
              print("white")
              max_blob_1 = find_max(blobs)
              img.draw_rectangle(max_blob_1.rect())
                  #用矩形标记出目标颜色区域
              img.draw_cross(max_blob_1.cx(), max_blob_1.cy())
              print("cx: ", max_blob_1.cx())             #打印X的的位置
              print("cy: ", max_blob_1.cy())
      
      
      
          blobs = img.find_blobs([pink_threshold_01], pixels_threshold=100, area_threshold=100, merge=True, margin=10);
          if blobs:
              max_blob_2 = find_max(blobs)
              img.draw_rectangle(max_blob_2.rect(),color = (255, 0, 0))
                  #用矩形标记出目标颜色区域
              img.draw_cross(max_blob_2.cx(), max_blob_2.cy())
              print("pink cx: cy: ", max_blob_2.cx(),max_blob_2.cy())             #打印X的的位置
      
      

      0_1666007733147_e70e46a4-6075-47ed-a2ee-749111d53338-image.png



    • 那说明白色阈值没调好。