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



    • import sensor, image, time ,pyb
      from pyb import LED
      from pyb import UART
      import struct
      
      import json
      red_led   = LED(1)
      green_led   = LED(2)
      thresholds = [(25, 95, 23, 92, 10, 79), # 一般情况下的红色阈值
                    (47, 99, -92, -18, 4, 84), # 一般情况下的绿色阈值(16, 40, -58, -18, 8, 50)
                    (0, 80, -78, -20, -57, 4), # 一般情况下的蓝色阈值(26, 71, -27, 1, -59, -20)(7, 32, -31, 26, -82, -12)
                    (0, 73, 94, 19, 1, 127)]
      #red_threshold  = (12, 100, 127, 28, -128, 127)
      #thresholds=[ (47, 99, -92, -18, 4, 84)]
      #blue_threshold  = (12, 100, 127, 28, -128, 127)
      #green_threshold  = (12, 100, 127, 28, -128, 127)
      Left_Right_error=0
      uart = UART(3, 256000)
      middle = 0
      distance = 0
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(10)
      sensor.set_auto_whitebal(False)
      clock = time.clock()
      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
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          blobs = img.find_blobs(thresholds)
       #   blobs = img.find_blobs(thresholds, pixels_threshold=150, area_threshold=150, merge=True)
      
          if blobs:
              green_led.on()
              max_blob = find_max(blobs)
              middle_x = max_blob.cx()
              middle_y = max_blob.cy()
              Len=max_blob[2]
              width=max_blob[3]
              img.draw_rectangle(max_blob.rect())
              img.draw_cross(max_blob.cx(), max_blob.cy())
              Lm = (max_blob[2]+max_blob[3])/2
              distance = int(2668/Lm)
             # print(distance)
              uart.writechar(0xf1)
              uart.writechar(middle_x>>8)
              uart.writechar(middle_x)
              uart.writechar(middle_y>>8)
              uart.writechar(middle_y)
              uart.writechar(Len>>8)
              uart.writechar(Len)
              uart.writechar(width>>8)
              uart.writechar(width)
              uart.writechar(0xf2)
              print(middle_x,middle_y,max_blob[2],max_blob[3])
          else:
              green_led.off()
      
      for c in img.find_circles(threshold = 2000, x_margin = 10, y_margin = 10, r_margin = 10,
              r_min = 2, r_max = 100, r_step = 2):
          img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0))
          print(c)
      ![0_1715757268905_f3e623a24127ad9c0d0740abb23b110.png](https://fcdn.singtown.com/28b95848-8e1c-4611-b35b-085ca485da11.png) 
      


    • 1,你的代码最后缩进有错误
      2,find_circles很耗费ram,所以OpenMV4 H7上不能在QVGA上使用

      解决办法:
      1,QVGA改为QQVGA
      2,换OpenMV4 Plus