使用OpenCV进行形状检测

时间:2014-04-14 18:00:50

标签: opencv javacv

我正在研究OMR引擎。扫描的页面是4个角(我裁剪左上角并附加)。我用红线勾勒出轮廓。因此,我需要检测扫描页面的角(标有红色轮廓的形状)以检测OMR的区域。我想用OpenCV / JavaCV来做,但我是OpenCV的新手。我找到了像轮廓检测和近似,线检测与Hought变换的解决方案,但我不太了解如何申请解决我的问题。请帮忙。线的粗细约为19px,长度约为250像素;

image from scanner

2 个答案:

答案 0 :(得分:2)

有很多方法可以解决这个问题。我认为你所寻找的东西类似于template matching,因为你知道你在每张图片中寻找什么。 OpenCV具有标准template matching的实现。

这会给你一个不错的开始,但是,它可能不够强大,无法处理各种扫描文档。您可能希望对最先进的对象识别算法进行一些research。这些往往是高度专有的,所以如果很难找到关于这个主题的大量详细信息,请不要感到惊讶。

答案 1 :(得分:1)

如果您的图像是以常规方式拍摄的,即所有相同尺寸或​​特定距离,我认为以下步骤会有所帮助:

  1. 指定您的投资回报率(图片左上角的感兴趣区域)
  2. 消除噪音(您可以使用特定SE尺寸的侵蚀)
  3. 对图像进行侵蚀以消除细线
  4. 使用Line Hough Transform
  5. 找到行的交集
  6. 之后你就有了你的形状。