• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 我在尝试在彩色图片中识别矩形后并计算识别矩形的灰度值时出现了一个问题,见截图



    • import sensor, image, pyb, time, lcd
      
      record_time = 10000 # 10 seconds in milliseconds
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(time = 2000)
      clock = time.clock()
      sensor.set_auto_whitebal(False)
      sensor.skip_frames(30) # Let new settings take affect.
      sensor.set_gainceiling(8)
      lcd.init()
      
      img_writer = image.ImageWriter("/example5.jpg")
      
      # Red LED on means we are capturing frames.
      red_led = pyb.LED(1)
      red_led.on()
      start = pyb.millis()
      while pyb.elapsed_millis(start) < record_time:
          clock.tick()
          img = sensor.snapshot()
          for r in img.find_rects(threshold = 10000):
                  img.draw_rectangle(r.rect(), color = (255, 0, 0))
                  for p in r.corners(): img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))
                  print(r)
          roi = rect.rect()
          statistics = img.get_statistics(roi=roi)
          print(statistics.l_mean()) #输出灰度的平均值
          img.draw_string(75,100,'C='+str(statistics.l_mean()),color=(255,255,255))
          lcd.display(img)
          img_writer.add_frame(img)
          print(clock.fps())
      
      img_writer.close()
      
      # Blue LED on means we are done.
      red_led.off()
      blue_led = pyb.LED(3)
      blue_led.on()
      
      print("Done")
      while(True):
          pyb.wfi()
      
      

      以上是代码
      0_1536030847147_f180e270-c9b8-4d2f-8de4-97986505cef0-image.png
      出现了如截图所示的问题,请问下解决办法



    • 很明显,rect没定义。rect这个变量哪来的?



    • 第25行定义的
      即使我换成roi = r.rect() 还是会出现这个同样的问题



    • r在for循环里才能用。每次循环都会改变值。



    • 那请问下这种情况怎么办



    • roi = []
      for r in img.find_rects(threshold = 10000):
          img.draw_rectangle(r.rect(), color = (255, 0, 0))
          for p in r.corners(): 
              img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))
              print(r)
              roi = r.rect()
      

      这个逻辑是roi会赋值为最后一个方块,也许你还需要查找最大的方块。



    • 谢谢你耐心的回复,但是我又出现了这么个问题



    • 0_1536156700893_微信图片_20180905221127.png
      我想的是算出我找到的矩形的灰度,但是好像这种for循环没法用,请问下有什么解决办法吗



    • 0_1536158459242_微信图片_20180905224045.png
      有时候也会出现这个问题,但是偶尔只有一个正方形的话也能够测算出灰度值,请能说说问题在哪,怎么解决吗