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



    • 教程中只说其为霍夫变换后的p值,我在用代码检查直线测试时,rho值有正有负,请问这个值到底是指什么距离?如果理解为距离左上角的原点的距离又为何会出现负数呢?百思不得其解,求指教!

      # 线段检测例程
      #
      # 这个例子展示了如何在图像中查找线段。对于在图像中找到的每个线对象,
      # 都会返回一个包含线条旋转的线对象。
      
      # find_line_segments()找到有限长度的线(但是很慢)。
      # Use find_line_segments()找到非无限的线(而且速度很快)。
      
      enable_lens_corr = False # turn on for straighter lines...
      binary_visible = 0
      black_threshold = [0,64]
      import sensor, image, time
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565) # grayscale is faster
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(time = 2000)
      clock = time.clock()
      
      # 所有线段都有 `x1()`, `y1()`, `x2()`, and `y2()` 方法来获得他们的终点
      # 一个 `line()` 方法来获得所有上述的四个元组值,可用于 `draw_line()`.
      
      while(True):
          print("begin")
          clock.tick()
          img = sensor.snapshot().binary([black_threshold]) if binary_visible else sensor.snapshot()
          if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens...
      
          # `merge_distance`控制附近行的合并。 在0(默认),没有合并。
          # 在1处,任何距离另一条线一个像素点的线都被合并...等等,
          # 因为你增加了这个值。 您可能希望合并线段,因为线段检测会产生大量
          # 的线段结果。
      
          # `max_theta_diff` 控制要合并的任何两线段之间的最大旋转差异量。
          # 默认设置允许15度。
      
          for l in img.find_line_segments(merge_distance = 20, max_theta_diff = 5):
              area = (l[0], l[1], 2, 2)
              #statistic = img.get_statistics(roi=area)
              #print(statistic[0])
              img.draw_line(l.line(), color = (255, 0, 0))
              # print(l)
              #print(l[0], l[1], l[2], l[3])
              print(l.rho(), l.theta())
          #print("FPS %f" % clock.fps())
      
      




    • 此回复已被删除!