0

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

图片

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在程序 1 中:程序1

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

在程序 2 中:程序2

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

您能否建议我代码中有什么问题或者是否有更好的解决方案。

4

1 回答 1

0

我没有通过你的代码。但是如果你想测量两个不平行的边缘之间的距离,我建议对每行取它们之间的距离并取平均值。也许你得到的错误值是由于多个边缘。所以这是你可以做的,

  1. 从第 0 行第 0 列开始
  2. 获取白色像素,存储当前列。(cur_loc = xxx)
  3. 找到下一个白色像素( new_loc = yyy ),测量差异,将其放入表格中。将此像素标记为起始像素 (cur_loc = new_loc) 并搜索下一个像素,直到到达列的末尾。
  4. 重置 cur_loc 和 new_loc 并重新开始。
于 2013-07-31T08:22:31.617 回答