【发布时间】:2012-08-23 07:49:30
【问题描述】:
我浏览了几个模板匹配教程,我注意到大多数教程都试图匹配从原始图像裁剪的模板。但是我想知道是否可以识别具有不同宽度和高度的相似物体?
在我的项目中,我生成了以下类型的图像。
我需要从中识别出以下组件。
如何使用 opencv 或 javacv 存档?是否可以为此使用模板匹配?因为这个对象可以有不同的大小,所以可以使用它吗?请问有人可以给出简单的代码示例来识别这个对象吗?
【问题讨论】:
我浏览了几个模板匹配教程,我注意到大多数教程都试图匹配从原始图像裁剪的模板。但是我想知道是否可以识别具有不同宽度和高度的相似物体?
在我的项目中,我生成了以下类型的图像。
我需要从中识别出以下组件。
如何使用 opencv 或 javacv 存档?是否可以为此使用模板匹配?因为这个对象可以有不同的大小,所以可以使用它吗?请问有人可以给出简单的代码示例来识别这个对象吗?
【问题讨论】:
我不确定它在实际情况下是否对您有所帮助,但简单的阈值对您的输入图像起到了作用:
代码:
Mat src = imread("input.jpg"), tmp;
cvtColor(src, tmp, CV_BGR2GRAY);
threshold(tmp, tmp, 200, 255, THRESH_BINARY);
【讨论】:
findContours 函数并在此之后找到每个轮廓的中心。
模板匹配/模式识别适用于此。但是,据我所知,openCV 的模板匹配不使用缩放或旋转。它只是通过在图像上“滑动”模板并寻找最小的差异来找到最可能的位置。 我个人会为此使用 HALCON,但这是一个非常昂贵的程序/包。
【讨论】: