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



    • import time, sensor, image, math
      from pyb import UART
      import sensor, image, math

      uart = UART(3, 9600)
      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()

      thresholds_red = [(30, 100, 15, 127, 15, 127)] # generic_red_thresholds
      thresholds_green = [(30, 100, -64, -8, -32, 32)] # generic_green_thresholds
      thresholds_blue = [(0, 15, 0, 40, -80, -20)] # generic_blue_thresholds
      int(cx), # up sample by 4 #数据1
      int(cy), # up sample by 4 #数据2
      int(cw), # up sample by 4 #数据1
      int(ch), # up sample by 4 #数据2
      int(cj), # up sample by 4 #数据1
      int(cz), # up sample by 4 #数据2

      while(True):
      clock.tick()
      img = sensor.snapshot()
      img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
      for code in img.find_qrcodes():
      img.draw_rectangle(code.rect(), color = (255, 0, 0))
      print(code)
      qrcode2 = code.payload()
      cx = int(qrcode2[0:1])
      cy = int(qrcode2[1:2])
      cw = int(qrcode2[2:3])
      ch = int(qrcode2[4:5])
      cj = int(qrcode2[5:6])
      cz = int(qrcode2[6:7])
      print(cx)

      if cx == 1 :
      
      clock.tick()
      img = sensor.snapshot()
      for blob in img.find_blobs(thresholds_red, pixels_threshold=200, area_threshold=200):   #未设置roi
          # These values depend on the blob not being circular - otherwise they will be shaky.
          if blob.elongation() > 0.5:
              img.draw_edges(blob.min_corners(), color=(255,0,0))
              img.draw_line(blob.major_axis_line(), color=(0,255,0))
              img.draw_line(blob.minor_axis_line(), color=(0,0,255))
          # These values are stable all the time.
          img.draw_rectangle(blob.rect())
          img.draw_cross(blob.cx(), blob.cy())
          # Note - the blob rotation is unique to 0-180 only.
          img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)                #识别寻找红色色块
      
      uart.write('red')#发送完成信号
      print("red")


    • 0_1695121152201_p.png



    • 缩进不对,if下面必须有缩进。



    • @kidswong999 解决了多谢



    • @kidswong999 while(True):
      clock.tick()
      img = sensor.snapshot()
      img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
      for code in img.find_qrcodes():
      img.draw_rectangle(code.rect(), color = (255, 0, 0))
      print(code)
      qrcode2 = code.payload()
      cx = int(qrcode2[0:1])
      cy = int(qrcode2[1:2])
      cw = int(qrcode2[2:3])
      ch = int(qrcode2[4:5])
      cj = int(qrcode2[5:6])
      cz = int(qrcode2[6:7])
      print(cx)

      if cx == 1 :
      
          clock.tick()
          img = sensor.snapshot()
          for blob in img.find_blobs(thresholds_red, pixels_threshold=200, area_threshold=200):   #未设置roi
          # These values depend on the blob not being circular - otherwise they will be shaky.
              if blob.elongation() > 0.5:
                  img.draw_edges(blob.min_corners(), color=(255,0,0))
                  img.draw_line(blob.major_axis_line(), color=(0,255,0))
                  img.draw_line(blob.minor_axis_line(), color=(0,0,255))
                  # These values are stable all the time.
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  # Note - the blob rotation is unique to 0-180 only.
                  img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)                #识别寻找红色色块
      
      uart.write('red')#发送完成信号
      print("red")
      
      else if cx == 2 :
      
          clock.tick()
          img = sensor.snapshot()
          for blob in img.find_blobs(thresholds_green, pixels_threshold=200, area_threshold=200):   #未设置roi
              # These values depend on the blob not being circular - otherwise they will be shaky.
              if blob.elongation() > 0.5:
                  img.draw_edges(blob.min_corners(), color=(255,0,0))
                  img.draw_line(blob.major_axis_line(), color=(0,255,0))
                  img.draw_line(blob.minor_axis_line(), color=(0,0,255))
                  # These values are stable all the time.
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  # Note - the blob rotation is unique to 0-180 only.
                  img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)                #识别寻找绿色色块
      
      
       uart.write('green')#发送完成信号
       print("green")


    • 那关于这个错误呢0_1695274584160_pro.png



    • 62行和63行缩进也不对。



    • @kidswong999 改了之后还是不行0_1695298809978_pro.png

      import time, sensor, image, math
      from pyb import UART
      import sensor, image, math

      uart = UART(3, 9600)
      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()

      thresholds_red = [(30, 100, 15, 127, 15, 127)] # generic_red_thresholds
      thresholds_green = [(30, 100, -64, -8, -32, 32)] # generic_green_thresholds
      thresholds_blue = [(0, 15, 0, 40, -80, -20)] # generic_blue_thresholds
      int(cx), # up sample by 4 #数据1
      int(cy), # up sample by 4 #数据2
      int(cw), # up sample by 4 #数据1
      int(ch), # up sample by 4 #数据2
      int(cj), # up sample by 4 #数据1
      int(cz), # up sample by 4 #数据2

      while(True):
      clock.tick()
      img = sensor.snapshot()
      img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
      for code in img.find_qrcodes():
      img.draw_rectangle(code.rect(), color = (255, 0, 0))
      print(code)
      qrcode2 = code.payload()
      cx = int(qrcode2[0:1])
      cy = int(qrcode2[1:2])
      cw = int(qrcode2[2:3])
      ch = int(qrcode2[4:5])
      cj = int(qrcode2[5:6])
      cz = int(qrcode2[6:7])
      print(cx)

      if cx == 1 :
      
          clock.tick()
          img = sensor.snapshot()
          for blob in img.find_blobs(thresholds_red, pixels_threshold=200, area_threshold=200):   #未设置roi
          # These values depend on the blob not being circular - otherwise they will be shaky.
              if blob.elongation() > 0.5:
                  img.draw_edges(blob.min_corners(), color=(255,0,0))
                  img.draw_line(blob.major_axis_line(), color=(0,255,0))
                  img.draw_line(blob.minor_axis_line(), color=(0,0,255))
                  # These values are stable all the time.
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  # Note - the blob rotation is unique to 0-180 only.
                  img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)                #识别寻找红色色块
      
                  uart.write('red')#发送完成信号
                  print("red")
      
      else if cx == 2 :
      
          clock.tick()
          img = sensor.snapshot()
          for blob in img.find_blobs(thresholds_green, pixels_threshold=200, area_threshold=200):   #未设置roi
              # These values depend on the blob not being circular - otherwise they will be shaky.
              if blob.elongation() > 0.5:
                  img.draw_edges(blob.min_corners(), color=(255,0,0))
                  img.draw_line(blob.major_axis_line(), color=(0,255,0))
                  img.draw_line(blob.minor_axis_line(), color=(0,0,255))
                  # These values are stable all the time.
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  # Note - the blob rotation is unique to 0-180 only.
                  img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)                #识别寻找绿色色块
      
      
                  uart.write('green')#发送完成信号
                  print("green")
      
      else if cx == 3:
      
          clock.tick()
          img = sensor.snapshot()
          for blob in img.find_blobs(thresholds_blue, pixels_threshold=200, area_threshold=200):   #未设置roi
              # These values depend on the blob not being circular - otherwise they will be shaky.
              if blob.elongation() > 0.5:
                  img.draw_edges(blob.min_corners(), color=(255,0,0))
                  img.draw_line(blob.major_axis_line(), color=(0,255,0))
                  img.draw_line(blob.minor_axis_line(), color=(0,0,255))
                  # These values are stable all the time.
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  # Note - the blob rotation is unique to 0-180 only.
                  img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20)                #识别寻找蓝色色块
      
                  uart.write('blue')#发送完成信号
                  print("blue")


    • 我建议你先把python的语法学一遍,然后再写代码。这都是缩进这种基本问题。



    • @kidswong999 解决了谢谢,好久没用python了把elif写成else if了