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



    • emmmm,我根据网上的历程(颜色识别,光源识别(灰度图),和多颜色识别)。写了一段可以同时识别颜色与光源的代码。但是在实际执行中只识别出了红色。源代码如下。
      import sensor, image, time, math
      red_threshold =(64, 55, 61, 72, -5, 30)

      grayscale_threshold = [(100, 130)]

      red_color_code = 1

      gray_color_code = 2

      sensor.reset() # 初始化摄像头
      sensor.set_pixformat(sensor.RGB565) # 选择像素模式 RGB565.
      sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
      sensor.skip_frames(10) # Let new settings take affect.
      sensor.set_auto_whitebal(False) #关闭白平衡。白平衡是默认开启的,在颜色识别中,需要关闭白平衡。

      clock = time.clock() # Tracks FPS.

      while(True):
      clock.tick() # Track elapsed milliseconds between snapshots().
      img = sensor.snapshot() # 拍照,返回图像
      # 在图像中寻找满足颜色阈值约束(color_threshold, 数组格式), 像素阈值pixel_threshold, 色块面积大小阈值(area_threshold)的色块
      blobs = img.find_blobs([red_threshold],[grayscale_threshold])
      if blobs:
      #如果找到了目标颜色
      for blob in blobs:
      #迭代找到的目标颜色区域
      x = blob[0]
      y = blob[1]
      width = blob[2] # 色块矩形的宽度
      height = blob[3] # 色块矩形的高度

              center_x = blob[5] # 色块中心点x值
              center_y = blob[6] # 色块中心点y值
      
              color_code = blob[8] # 颜色代码
      
              # 添加颜色说明
              if color_code == red_color_code:
                  img.draw_string(x, y - 10, "red", color = (0xFF, 0x00, 0x00))
              elif color_code == gray_color_code:
                  img.draw_string(x, y - 10, "gary", color = (0x00, 0xFF, 0x00))
      
              #用矩形标记出目标颜色区域
              img.draw_rectangle([x, y, width, height])
              #在目标颜色区域的中心画十字形标记
              img.draw_cross(center_x, center_y)
      
      
      
      print(clock.fps())
      # Note: Your OpenMV Cam runs about half as fast while
      # connected to your computer. The FPS should increase once disconnected.
      

      希望高手们可以帮我看看是那一步出现了问题。



    • 你要说具体的问题,我根本不知道你的问题是什么。☹



    • @kidswong999 emmmmm,问题就是这代码的实际运行效果是只能识别红色,但是却没有识别出光源
      测试的时候,红色卡片,红色灯,白灯,它只在红色卡片和红灯有框框(识别出),白灯却没有。



    • 你的阈值要改一下,都用彩色的



    • @kidswong999 就是说这个方法不能同时得到色块坐标和光源坐标吗



    • 可以,但是你的光源那个阈值得改一下,用彩色的。



    • @kidswong999 emmm,不是很懂,往详解
      你说的是哪个gray_threahold吗



    • @kidswong999 那,能不能详细说下改哪里



    • grayscale_threshold = [(100, 130)] 改成彩色阈值。



    • @yuan 改成彩色阈值,它还能识别光源吗?
      如果能的话要怎么改?



    • 识别光源,就是识别色块,二者没有任何区别



    • @kidswong999 那,我问下怎么在颜色阈值里达到识别光源(色块)的作用



    • @kidswong999 emmm,等等,刚刚我重新看了一下教程,lab中,l是不是亮度的意思(•̩̩̩̩_•̩̩̩̩)



    • 你说的,很对,l就是亮度



    • @kidswong999 (•̩̩̩̩_•̩̩̩̩)(•̩̩̩̩_•̩̩̩̩)(•̩̩̩̩_•̩̩̩̩)好的,我再试试,谢谢大佬