导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. oxu2
    3. 楼层
    O
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    oxu2 发布的帖子

    • RE: openmv脱机运行到一半时会卡死,能帮忙看下什么问题吗?

      串口有发送数据,但是用串口调试助手看是空的

      发布在 OpenMV Cam
      O
      oxu2
    • RE: openmv脱机运行到一半时会卡死,能帮忙看下什么问题吗?

      我已经按照你说的修改了代码,但是还是在脱机运行的时候会卡死,无法脱机运行。

      发布在 OpenMV Cam
      O
      oxu2
    • RE: openmv脱机运行到一半时会卡死,能帮忙看下什么问题吗?

      0_1648.png
      color code 定义过了但是还是会报错

      发布在 OpenMV Cam
      O
      oxu2
    • RE: openmv脱机运行到一半时会卡死,能帮忙看下什么问题吗?

      color_code定义过但是他会报错,
      color_code' isn't defined
      而且摄像头非常的黑,换了一个摄像头就是正常亮度,

      发布在 OpenMV Cam
      O
      oxu2
    • openmv脱机运行到一半时会卡死,能帮忙看下什么问题吗?
      import sensor, image, time, math,pyb,utime
      from pyb import UART #引入串口通信
      from pyb import LED  #提示
      
      red_led = LED(1)
      green_led = LED(2)
      blue_led = LED(3)
      
      
      
      global left,middle,right,VAL
      global color
      global flag_color  #标志变量
      
      
      left = 0
      middle = 0
      right = 0
      
      flag_color = 0
      
      red_threshold = (37, 64, 44, 127, -128, 127)
      green_threshold = (18, 68, -62, -28, -128, 127)
      blue_threshold = (46, 13, -33, 14, -52, -9) #红、绿、蓝颜色阈值
      
      red_color_code = 1
      green_color_code = 2
      blue_color_code = 4
      black_color_code = 8
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # 关闭自动增益
      sensor.set_auto_whitebal(False) # 关闭白平衡
      clock = time.clock()
      
      uart = UART(3,9600) #初始化串口通信
      
      def Light():
          red_led.on()
          green_led.on()
          blue_led.on()
      
      if flag_color == 0:
         flag_color = 1
      
      #二维码读取
      while(flag_color == 1):
          clock.tick()
          img0 = sensor.snapshot()
          img0.lens_corr(1.8)
          for QR in img0.find_qrcodes():
              code = QR.payload()
              img0.draw_rectangle(QR.rect(),color = (255,48,48))
              if code == '绿色蓝色':
                  utime.sleep_ms(2000)
                  uart.write('23')
                  uart.write('0')
                  print('23')
                  flag_color = 2
                  break
              if code == '绿色红色':
                  utime.sleep_ms(2000)
                  uart.write('21')
                  uart.write('0')
                  print('21')
                  flag_color = 2
                  break
              if code == '蓝色绿色':
                  utime.sleep_ms(2000)
                  uart.write('32')
                  uart.write('0')
                  print('32')
                  flag_color = 2
                  break
              if code == '蓝色红色':
                  utime.sleep_ms(2000)
                  uart.write('31')
                  uart.write('0')
                  print('31')
                  flag_color = 2
                  break
              if code == '红色绿色':
                  utime.sleep_ms(2000)
                  uart.write('12')
                  uart.write('0')
                  print('12')
                  flag_color = 2
                  break
              if code == '红色蓝色':
                  utime.sleep_ms(2000)
                  uart.write('13')
                  uart.write('0')
                  print('13')
                  flag_color = 2
                  break
      
      
      #标志变量为2时
      while(flag_color == 2):
          clock.tick()
          img = sensor.snapshot()
      
          #在三个框里识别物体
          img.draw_rectangle((18,80,82,102),color=(0xff,0xff,0xff))
          img.draw_rectangle((118,74,100,106),color=(0xff,0xff,0xff))
          img.draw_rectangle((238,70,78,102),color=(0xff,0xff,0xff))
      
          #识别左、中、右三个物块
          blob_left = img.find_blobs([red_threshold,green_threshold,blue_threshold],area_threshold = 200,merge = True,roi = (18,80,82,102))
          blob_middle = img.find_blobs([red_threshold,green_threshold,blue_threshold],area_threshold = 200,merge = True,roi = (118,74,100,106))
          blob_right = img.find_blobs([red_threshold,green_threshold,blue_threshold],area_threshold = 200,merge = True,roi = (238,70,78,102))
      
          left = 0
          middle = 0
          right = 0
      
          #判断左侧物体颜色
          if blob_left:
              for blob in blob_left:
                  x = blob[0]
                  y = blob[1]
                  width = blob[2]
                  height = blob[3]
                  center_x = blob[5]
                  center_y = blob[6]
                  color_code = blob[8]
      
              #添加颜色说明
              if color_code == red_color_code:
                  img.draw_string(x, y,  'red',color = (0xff,0x00,0x00))
                  left = 1
              elif color_code == green_color_code:
                  img.draw_string(x,y-10,"green",color = (0x00,0xff,0x00))
                  left = 2
              elif color_code == blue_color_code:
                  img.draw_string(x,y-10,"blue",color = (0x00,0x00,0xff))
                  left = 3
              color = color_code
              img.draw_rectangle(x,y,width,height)
              img.draw_cross(center_x,center_y)
      
          #判断中间物体颜色
          if blob_middle:
              for blob in blob_middle:
                  x = blob[0]
                  y = blob[1]
                  width = blob[2]
                  height = blob[3]
                  center_x = blob[5]
                  center_y = blob[6]
                  color_code = blob[8]
      
              #添加颜色说明
              if color_code == red_color_code:
                  img.draw_string(x,y-10,"red",color = (0xff,0x00,0x00))
                  middle = 1
              elif color_code == green_color_code:
                  img.draw_string(x,y-10,"green",color = (0x00,0xff,0x00))
                  middle = 2
              elif color_code == blue_color_code:
                  img.draw_string(x,y-10,"blue",color = (0x00,0x00,0xff))
                  middle = 3
              color = color_code
              img.draw_rectangle(x,y,width,height)
              img.draw_cross(center_x,center_y)
      
          #判断右侧物体颜色
          if blob_right:
             for blob in blob_right:
                 x = blob[0]
                 y = blob[1]
                 width = blob[2]
                 height = blob[3]
                 center_x = blob[5]
                 center_y = blob[6]
                 color_code = blob[8]
      
          #添加颜色说明
          if color_code == red_color_code:
             img.draw_string(x,y-10,"red",color = (0xff,0x00,0x00))
             right = 1
          elif color_code == green_color_code:
             img.draw_string(x,y-10,"green",color = (0x00,0xff,0x00))
             right = 2
          elif color_code == blue_color_code:
             img.draw_string(x,y-10,"blue",color = (0x00,0x00,0xff))
             right = 3
          color = color_code
          img.draw_rectangle(x,y,width,height)
          img.draw_cross(center_x,center_y)
      
          if left!=0 and middle != 0 and right != 0 and left != middle and left != right and right != middle:
              #123
              if left == 1 and middle == 2 and right == 3:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('123')
                  utime.sleep_ms(5000)
                  flag_color =3
              #132
              if left == 1 and middle == 3 and right == 2:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('132')
                  utime.sleep_ms(5000)
                  flag_color =3
              #213
              if left == 2 and middle == 1 and right == 3:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('213')
                  utime.sleep_ms(5000)
                  flag_color =3
              #231
              if left == 2 and middle == 3 and right == 1:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('231')
                  utime.sleep_ms(5000)
                  flag_color =3
              #312
              if left == 3 and middle == 1 and right == 2:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('312')
                  utime.sleep_ms(5000)
                  flag_color =3
              #321
              if left == 3 and middle == 2 and right == 1:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('321')
                  utime.sleep_ms(5000)
                  flag_color =3
      
      #当标志变量变为3时:
      while(flag_color == 3):
      
          clock.tick()
          img = sensor.snapshot()
      
          #在三个框里识别物体
          img.draw_rectangle((18,80,82,102),color=(0x00,0x00,0x00))
          img.draw_rectangle((118,74,100,106),color=(0x00,0x00,0x00))
          img.draw_rectangle((238,70,78,102),color=(0x00,0x00,0x00))
      
          #识别左、中、右三个物块
          blob_left = img.find_blobs([red_threshold,green_threshold,blue_threshold],area_threshold = 200,merge = True,roi = (18,80,82,102))
          blob_middle = img.find_blobs([red_threshold,green_threshold,blue_threshold],area_threshold = 200,merge = True,roi = (118,74,100,106))
          blob_right = img.find_blobs([red_threshold,green_threshold,blue_threshold],area_threshold = 200,merge = True,roi = (238,70,78,102))
      
          left = 0
          middle = 0
          right = 0
      
          #判断左侧物体颜色
          if blob_left:
              for blob in blob_left:
                  x = blob[0]
                  y = blob[1]
                  width = blob[2]
                  height = blob[3]
                  center_x = blob[5]
                  center_y = blob[6]
                  color_code = blob[8]
      
              #添加颜色说明
              if color_code == red_color_code:
                  img.draw_string(x, y,  'red',color = (0xff,0x00,0x00))
                  left = 1
              elif color_code == green_color_code:
                  img.draw_string(x,y-10,"green",color = (0x00,0xff,0x00))
                  left = 2
              elif color_code == blue_color_code:
                  img.draw_string(x,y-10,"blue",color = (0x00,0x00,0xff))
                  left = 3
              color = color_code
              img.draw_rectangle(x,y,width,height)
              img.draw_cross(center_x,center_y)
      
          #判断中间物体颜色
          if blob_middle:
              for blob in blob_middle:
                  x = blob[0]
                  y = blob[1]
                  width = blob[2]
                  height = blob[3]
                  center_x = blob[5]
                  center_y = blob[6]
                  color_code = blob[8]
      
              #添加颜色说明
              if color_code == red_color_code:
                  img.draw_string(x,y-10,"red",color = (0xff,0x00,0x00))
                  middle = 1
              elif color_code == green_color_code:
                  img.draw_string(x,y-10,"green",color = (0x00,0xff,0x00))
                  middle = 2
              elif color_code == blue_color_code:
                  img.draw_string(x,y-10,"blue",color = (0x00,0x00,0xff))
                  middle = 3
              color = color_code
              img.draw_rectangle(x,y,width,height)
              img.draw_cross(center_x,center_y)
      
          #判断右侧物体颜色
          if blob_right:
             for blob in blob_right:
                 x = blob[0]
                 y = blob[1]
                 width = blob[2]
                 height = blob[3]
                 center_x = blob[5]
                 center_y = blob[6]
                 color_code = blob[8]
      
          #添加颜色说明
          if color_code == red_color_code:
             img.draw_string(x,y-10,"red",color = (0xff,0x00,0x00))
             right = 1
          elif color_code == green_color_code:
             img.draw_string(x,y-10,"green",color = (0x00,0xff,0x00))
             right = 2
          elif color_code == blue_color_code:
             img.draw_string(x,y-10,"blue",color = (0x00,0x00,0xff))
             right = 3
          color = color_code
          img.draw_rectangle(x,y,width,height)
          img.draw_cross(center_x,center_y)
      
          if left!=0 and middle != 0 and right != 0 and left != middle and left != right and right != middle:
              #123
              if left == 1 and middle == 2 and right == 3:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('123')
                  flag_color =4
              #132
              if left == 1 and middle == 3 and right == 2:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('132')
                  flag_color =4
              #213
              if left == 2 and middle == 1 and right == 3:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('213')
                  flag_color =4
              #231
              if left == 2 and middle == 3 and right == 1:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('231')
                  flag_color =4
              #312
              if left == 3 and middle == 1 and right == 2:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('312')
                  flag_color =4
              #321
              if left == 3 and middle == 2 and right == 1:
                  print("%d%d%d" % (left,middle,right))
                  uart.write('321')
                  flag_color =4
      #####完成扫描
      while(flag_color == 4):
          green_led.on()
      
      发布在 OpenMV Cam
      O
      oxu2