OpenCV - 测量两条边之间的距离

时间:2013-02-27 09:34:35

标签: opencv image-processing

我想测量两条边之间的距离(以像素为单位)。 以下是我使用的图像和我使用的代码的链接。

图片

enter image description here

enter image description here

enter image description here

enter image description here

在计划1中:Program1

我将图像Mat的特定行从0扫描到cols。即沿着一条扫描线。在这种情况下,我正确地获得了白色像素的位置,即边缘像素。

在计划2中:Program2

我从中间扫描了图像Mat的特定行,即我从行的中间到右方向测量直到cols,再次从行的中间到第0列。在这种情况下,我在获得白色像素的位置(即边缘像素)时会得到错误的值。

你能否告诉我代码中有什么问题,或者是否有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

我没有查看您的代码。但是如果你想测量两条不平行的边缘之间的距离,我会建议在它们之间取每行的距离并取平均值。也许错误的值,你得到的是因为多边缘。所以这就是你可以做的,

  1. 从第0行开始,第0列
  2. 获取白色像素,存储当前列。 (cur_loc = xxx)
  3. 找到下一个白色像素(new_loc = yyy),测量diff,将其放入表中。将此像素标记为起始像素(cur_loc = new_loc)并搜索下一个像素直到结束 列。
  4. 重置cur_loc和new_loc并重新开始。