如何使用OpenCV提取和定位特定的图像区域?

时间:2012-08-20 10:26:57

标签: opencv roi

我是OpenCV的新手。我想研究一个小项目来跟踪齿轮的转速(通过使用网络摄像头)。但是,到现在为止,我不知道如何解决这个问题。 发布的图像显示了一台包含两个“大”齿轮的机器。我只对左侧的装备感兴趣(我突出显示的是红线)。

Link

我的计划是:

  1. 提取感兴趣的齿轮区域。

  2. 掩盖所有不相关的区域。因此,蒙版图像仅显示左侧齿轮(ROI)。

  3. .....

    问题是,我如何定位/提取/掩盖ROI和掩码?。我通过一些关于cvMatchTemplate()的例子,但它不支持旋转和缩放。由于使用网络摄像头,捕获的图像可能会缩放或旋转。 cvfindcontour()将提取图像中的所有轮廓,而不是ROI。

1 个答案:

答案 0 :(得分:4)

如果您以前知道装备,可以使用它的图片通过SIFT,SURF,FAST或任何角点检测算法提取关键点。然后执行以下操作:

1-在每一帧上应用FAST以检测关键点。

2-从这些关键点中提取SIFT描述符

3-使用先前从图像中提取的点匹配场景中的检测点。您可以使用FLANN匹配器。

4-这些匹配将在场景中定义一个区域,其中包含您要查找的装备。

这并非易事,因此您需要在OpenCV文档中查找有关使用所有这些功能的信息。