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



    • sensor.reset()  #摄像头初始化
      #.set_pixformat(sensor.RGB565)  #设置为彩色模式
      #sensor.set_framesize(sensor.QQVGA)      #画幅为QQVGA即分辨率为160*120
      
      
      sensor.set_pixformat(sensor.GRAYSCALE)
      #sensor.set_framesize(sensor.QVGA)
      
      
      sensor.set_framesize(sensor.VGA)
      sensor.skip_frames(time = 2000)         #跳过起始画面,获取稳定图像
      sensor.set_auto_gain(False) #在色块检测模式下关闭自动补光
      sensor.set_auto_whitebal(False) #关闭白平衡
      clock = time.clock()
      
      while(True):
          #lens_corr 为了去除畸变, 1.8 是默认参数,可以根据自己实际情况调整
      #    img = sensor.snapshot().lens_corr(1.8)
          img = sensor.snapshot()
          # 圆形类有 4 个参数值: 圆心(x, y), r (半径)和 magnitude(量级);
          # 量级越大说明识别到的圆可信度越高。
          # `threshold` 参数控制找到圆的数量,数值的提升会降低识别圆形的总数。
          # `x_margin`, `y_margin`, and `r_margin`控制检测到接近圆的合并调节.
          # r_min, r_max, and r_step 用于指定测试圆的半径范围。
          for c in img.find_circles(threshold = 2000, x_margin =5, y_margin
          = 10, r_margin = 5,r_min = 2, r_max = 5, r_step = 2):
              #画红色圆做指示
              img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0))
              print(c)
      

      #打印圆形的信息0_1716782110155_论坛咨询.PNG



    • 因为你分辨率太大了,圆形匹配非常费内存,所以内存不够就报错了,解决办法是把分辨率调小,或者换OpenMV4 Plus,但是速度也慢。



    • @kidswong999 谢谢!你好,请问如何理解img.find_circles(threshold = 2000, x_margin =5, y_margin
      = 10, r_margin = 5,r_min = 2, r_max = 5, r_step = 2)这个函数的 x_margin, y_margin, r_margin 这3个参数,对这句“控制检测到接近圆的合并调节”不太理解,如果圆有大有小呢?



    • 如果两个圆的中心x距离小于5,就认为是一个圆。