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



    • import sensor, image, time
      import json
      from pyb import UART
      import pyb
      import math
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time=2000)
      sensor.set_auto_whitebal(True)
      sensor.set_auto_gain(True)
      clock = time.clock()
      def get_biggest_blob(b):
          max_blob_nb = 0
          max_blob = 0
          for i in range(len(b)):
              area = b[i].pixels()
              if area > max_blob:
                  max_blob = area
                  max_blob_nb = i
          return max_blob_nb
      def modified_data(data):
         data = int(data)
         str_data = ''
         if data < 10:
             str_data = str_data + '000' + str(data)
         elif data >= 10 and data < 100:
             str_data = str_data + '00' + str(data)
         elif data >=100 and data <1000:
             str_data = str_data + '0' + str(data)
         else:
             str_data = str_data + str(data)
         return str_data.encode('utf-8')
      uart = UART(3, 115200)
      red_threshold = [(31, 4, 6, 41, 34, -126),
                       (61, 2, 5, 44, 43, -126),
                       (81, 6, 15, 49, 90, -125)]
      green_threshold = [(43, 8, -70, -20, 51, -59),
                          (61, 12, -62, -20, 60, 6),
                          (46, 11, -56, -9, 47, -121)]
      color = 0
      num_s = 0
      num_x = 0
      num_y = 0
      num_l = 0
      k = 2600
      b=0
      gui=0
      you=0
      def my():
          pj=1
      while(True):
          t = 0
          clock.tick()
          img = sensor.snapshot()
          if uart.any():
              a = uart.readline().decode().strip()
              print(a)
              b = int(a)
          blobs1 = img.find_blobs(red_threshold,pixels_threshold=1100, area_threshold=1100)
          badblobs = img.find_blobs(green_threshold,pixels_threshold=1100, area_threshold=1100)
          if blobs1 or  badblobs :
              if blobs1 and  badblobs :
                  jj = get_biggest_blob(blobs1)
                  kk = get_biggest_blob(badblobs)
                  if blobs1[jj].pixels() > badblobs[kk].pixels() :
                      img.draw_rectangle(blobs1[jj].rect())
                      img.draw_cross(blobs1[jj].cx(), blobs1[jj].cy())
                      img.draw_rectangle(badblobs[kk].rect())
                      Lm = (blobs1[jj][2]+blobs1[jj][3]) / 2
                      leng = k / Lm
                      num_s = num_s + 1
                      x3=blobs1[jj].cx()
                      y3=blobs1[jj].cy()
                      l3 = leng
                      num_x = num_x + x3
                      num_y = num_y + y3
                      num_l = num_l + l3
                      w=5
                      h=0
                      z = modified_data(w)
                      print(num_s)
                      if num_s==1:
                          px=num_x/1
                          py=num_y/1
                          pl=num_l/1
                          x=modified_data(px)
                          y=modified_data(py)
                          l=modified_data(pl)
                          if b==111:
                              uart.write(z)
                              uart.write(x)
                              uart.write(y)
                              uart.write(l)
                              uart.write("\r\n")
                              z=modified_data(h)
                              print("success")
                          num_x = 0
                          num_y = 0
                          num_s = 0
                          num_l = 0
                          print('zhonglei', z,'cx:', x, 'cy:', y, 'length:', l)
                          you=1
                      t = 1
                      time.sleep(0.1)
              elif blobs1:
                  ii = get_biggest_blob(blobs1)
                  img.draw_rectangle(blobs1[ii].rect())
                  img.draw_cross(blobs1[ii].cx(), blobs1[ii].cy())
                  Lm = (blobs1[ii][2]+blobs1[ii][3]) / 2
                  leng = k / Lm
                  num_s = num_s + 1
                  x3=blobs1[ii].cx()
                  y3=blobs1[ii].cy()
                  l3 = leng
                  num_x = num_x + x3
                  num_y = num_y + y3
                  num_l = num_l + l3
                  w=5
                  h=0
                  z = modified_data(w)
                  print(num_s)
                  if num_s==1:
                      px=num_x/1
                      py=num_y/1
                      pl=num_l/1
                      x=modified_data(px)
                      y=modified_data(py)
                      l=modified_data(pl)
                      if b==111:
                          uart.write(z)
                          uart.write(x)
                          uart.write(y)
                          uart.write(l)
                          uart.write("\r\n")
                          z=modified_data(h)
                          print("success!!!")
                      num_x = 0
                      num_y = 0
                      num_s = 0
                      num_l = 0
                      print('zhonglei', z,'cx:', x, 'cy:', y, 'length:', l)
                      you=1
                  t = 1
                  time.sleep(0.1)
              elif  t == 0 and badblobs:
                  ii = get_biggest_blob(badblobs)
                  img.draw_rectangle(badblobs[ii].rect())
      
                  Lm = (badblobs[ii][2]+badblobs[ii][3]) / 2
                  leng = k / Lm
                  num_s = num_s + 1
                  x3=badblobs[ii].cx()
                  y3=badblobs[ii].cy()
                  l3 = leng
                  num_x = num_x + x3
                  num_y = num_y + y3
                  num_l = num_l + l3
                  w=2
                  z = modified_data(w)
                  print(num_s)
                  if num_s==1:
                      px=num_x/1
                      py=num_y/1
                      pl=num_l/1
                      x=modified_data(px)
                      y=modified_data(py)
                      l=modified_data(pl)
                      if b==111:
                          uart.write(z)
                          uart.write(x)
                          uart.write(y)
                          uart.write(l)
                          uart.write("\r\n")
                          w=0
                          z = modified_data(w)
                          print("lose")
                      num_x = 0
                      num_y = 0
                      num_s = 0
                      num_l = 0
                      print('zhonglei', z,'cx:', x, 'cy:', y, 'length:', l)
                      you=1
                  b=0
                  time.sleep(0.1)
          else:
              color=0
              x=modified_data(color)
              y=modified_data(color)
              l=modified_data(color)
              z = modified_data(color)
              if b==111:
                  uart.write(z)
                  uart.write(x)
                  uart.write(y)
                  uart.write(l)
                  uart.write("\r\n")
                  print("000000000")
              print("ao")
      


    • 我运行10分钟没发现停止,请提供具体的报错提示,和复现错误的步骤。