1

我正在编写一个从图片中测量盒子的应用程序。处理后的示例图片如下所示:

长方形

我的应用程序已识别出属于框的像素并将颜色更改为红色。您可以看到图像非常嘈杂,因此在矩形上创建了非常粗糙的边缘。

我一直在阅读有关边缘/角点检测算法的文章,但在我研究其中之一之前,我想退后一步,看看是否真的需要这样一个复杂的算法。考虑到我有一些简化事情的条件,似乎可能有一种更简单的方法来解决这个问题:

  • 该图像仅包含一个矩形,而不包含任何其他形状。
  • 每个图像只有 1 个矩形。
  • 我不需要精确,尽管我想尽可能地达到最佳状态。

我第一次尝试一个简单的算法,包括找到最顶部、最底部、最左边和最右边的点。那是4个角。这工作正常,但对于像这样的嘈杂边缘不是超级准确。很容易将一个更好的点视为角落。

谁能指出我的算法?

4

1 回答 1

2

您已经确定了您感兴趣的图像区域(红色区域)。

  • 使用相同的逻辑,您应该能够对图像进行二值化。假设红色区域产生白色像素,其余为黑色。
  • 然后使用轮廓跟踪算法跟踪白色区域的外部轮廓。
  • 现在您有了一个代表该区域外部轮廓的点集。
  • 找到边界该点集的最小面积矩形。

您可以使用 OpenCV 库轻松完成此操作。如果您打算使用 OpenCV,请查看 threshold、findContours 和 minAreaRect。希望这些信息有所帮助。

于 2014-07-29T02:39:57.587 回答