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



    • import sensor
      import image
      import time
      from pyb import Servo
      
      # 初始化OpenMV摄像头
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.set_auto_gain(False)
      sensor.set_auto_whitebal(False)
      sensor.skip_frames(10)
      
      # 初始化舵机
      s1 = Servo(1)  # 在X1引脚连接舵机
      s2 = Servo(2)
      
      red_count = 0  # 红球计数器
      blue_count = 0  # 蓝球计数器
      
      while red_count < 6:
          img = sensor.snapshot()  # 拍摄一张照片
          red_blobs = img.find_blobs([(30, 100, 15, 127, 15, 127)])  # 寻找红色区域
          
          if red_blobs:
              s2.angle(60)  # 转动舵机
              time.sleep(1)
              for blob in red_blobs:
                  # 在红色区域中心绘制矩形和十字形标记
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  
                  s1.angle(0)
                  time.sleep_ms(500)
                  s1.angle(60)
                  time.sleep_ms(400)
                  s1.angle(0)
              red_count += 1  # 红球计数加一
              print("红球计数:", red_count)  # 打印红球计数值
           
          if red_count == 6:
              break  # 红球数量达到6个,跳出循环
      
      while blue_count < 6:
          img = sensor.snapshot()  # 拍摄一张照片
          blue_blobs = img.find_blobs([(15, 100, -128, 0, -41, 3)])  # 寻找蓝色区域
          
          if blue_blobs:        
              s2.angle(0)  # 转回0度
              time.sleep(1)
              for blob in blue_blobs:
                  # 在蓝色区域中心绘制矩形和十字形标记
                  img.draw_rectangle(blob.rect())
                  img.draw_cross(blob.cx(), blob.cy())
                  
                  s1.angle(0)
                  time.sleep_ms(500)
                  s1.angle(60)
                  time.sleep_ms(400)
                  s1.angle(0)
              blue_count += 1  # 蓝球计数加一
              print("蓝球计数:", blue_count)  # 打印蓝球计数值
      


    • 你没有死循环,程序这个最终会跳出while blue_count < 6。