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



    • 如果用教程上的颜色训练程序得到的颜色阈值与实际的颜色阈值相差较大,会出现较大的误差,请问大神们有什么好的颜色训练程序或者方法呢☀ ☀



    • 误差,哪里来的误差?

      LAB的数据,如果你从阈值助手里复制,粘贴到代码里,就不会有误差。如果你手输,可能会输错。



    • 自动RGB565颜色跟踪示例

      这个例子展示了使用OpenMV的单色自动RGB565色彩跟踪。

      import sensor, image, time
      print("Letting auto algorithms run. Don't put anything in front of the camera!")

      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # must be turned off for color tracking
      sensor.set_auto_whitebal(False) # must be turned off for color tracking
      clock = time.clock()

      捕捉图像中心的颜色阈值。

      r = [(320//2)-(50//2), (240//2)-(50//2), 50, 50] # 50x50 center of QVGA.

      print("Auto algorithms done. Hold the object you want to track in front of the camera in the box.")
      print("MAKE SURE THE COLOR OF THE OBJECT YOU WANT TO TRACK IS FULLY ENCLOSED BY THE BOX!")
      for i in range(60):
      img = sensor.snapshot()
      img.draw_rectangle(r)

      print("Learning thresholds...")
      threshold = [50, 50, 0, 0, 0, 0] # Middle L, A, B values.
      for i in range(60):
      img = sensor.snapshot()
      hist = img.get_histogram(roi=r)
      lo = hist.get_percentile(0.01) # 获取1%范围的直方图的CDF(根据需要调整)!
      hi = hist.get_percentile(0.99) # 获取1%范围的直方图的CDF(根据需要调整)!
      # 平均百分位值。
      threshold[0] = (threshold[0] + lo.l_value()) // 2
      threshold[1] = (threshold[1] + hi.l_value()) // 2
      threshold[2] = (threshold[2] + lo.a_value()) // 2
      threshold[3] = (threshold[3] + hi.a_value()) // 2
      threshold[4] = (threshold[4] + lo.b_value()) // 2
      threshold[5] = (threshold[5] + hi.b_value()) // 2
      for blob in img.find_blobs([threshold], pixels_threshold=100, area_threshold=100, merge=True, margin=10):
      img.draw_rectangle(blob.rect())
      img.draw_cross(blob.cx(), blob.cy())
      img.draw_rectangle(r)

      print("Thresholds learned...")
      print("Tracking colors...")

      while(True):
      clock.tick()
      img = sensor.snapshot()
      for blob in img.find_blobs([threshold], pixels_threshold=100, area_threshold=100, merge=True, margin=10):
      img.draw_rectangle(blob.rect())
      img.draw_cross(blob.cx(), blob.cy())
      print(clock.fps())

      对于识别相同的颜色,用以上程序得到的颜色阈值与自己在阈值编辑器里得到的阈值相差较大(就是用以上程序识别颜色的效果不大理想),请问大神您有什么更好的自动RGB565色彩跟踪方法呢☀ ☀