使用OpenCV识别二值化图像中的基本形状

时间:2013-06-07 00:24:38

标签: opencv shapes image-recognition

如何识别一些基本(通常是旋转的)形状:

  • 圈,
  • “空”圈,
  • 交,
  • 空三角,

使用OpenCV?什么是最直接的方式?如果用户可以某种方式“定义”他自己的形状(可能加载模板图像),那将是很好的。

我想将每个识别的形状映射到它的类型(圆形,三角形等)和它的中心位置。 (如果可能的话,它的轮换)。

对于圆HoughCircles可以使用(在这种情况下也没有旋转)。但其他人呢?模板匹配不支持旋转和缩放,对吗?...

这是输入:

empty triangle, empty circle, circles

empty triangle, empty circle, cross

1 个答案:

答案 0 :(得分:4)

你是正确的,常规模板匹配不是旋转,缩放不变。看看OpenCV的matchShapes。在内部,它使用HuMoments。您需要使用findContours来查找每个对象。现在,一旦完成此操作,您可能会发现matchShapes无法区分Circle和Ring。解决此问题的一种简单方法是使用findContours中的层次结构。如果圆圈内有一个洞(足够大),那可能就是一个环。