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



    • 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 = [(18, 46, -4, 26, 5, 30)] # generic_red_thresholds
      thresholds_green =  [(47, 64, -67, -39, -128, 127)] # generic_green_thresholds
      thresholds_blue = [(24, 38, -128, 36, -73, -10)] # generic_blue_thresholds
      cx = 0, # up sample by 4   #数据1
      cy = 0, # up sample by 4    #数据2
      cw = 0, # up sample by 4    #数据1
      ch = 0, # up sample by 4    #数据2
      cj = 0, # up sample by 4    #数据1
      cz = 0, # up sample by 4    #数据2
      
      
      def cx1():
          for cx in tuple1:
              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('r')#发送完成信号
                          print("cx=red")
                          break
      
      
              elif 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('g')#发送完成信号
                          print("cx=green")
                          break
      
              elif 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('b')#发送完成信号
                          print("cx=blue")
                          break
      
      
      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('读取')
              print(qrcode2)
              list1 = list(qrcode2)
              time.sleep(5)
      
              tuple1 = (cx, cy, cw, ch, cj, cz)
              print(tuple1)
              print(cx)
              cx1()
              print(cx)
              cy1()
              print(cy)
      

      0_1695728715196_pro.png



    • 0_1695730596561_pro.png



    • 你的break只会跳出一层for的循环,我猜你想用return。