0

我正在尝试检测视频中的对象。我使用 SURF 作为特征检测和描述符提取器,使用 BRUTFORCE 作为匹配器。我用面孔测试了我的工作,我拍了一张我的照片,当我运行相机并将其对准我时,我的脸被检测到并在其周围绘制了一个矩形。我试图进行另一个测试,我捕获了鼠标的图像并调整了它的大小,当我运行凸轮时,它没有被检测到

我面临的问题是:

1-在这种情况下查询/对象图像的大小是否重要?我问这个问题是因为我捕捉到的自己的图像比鼠标的大,并且面部被检测到而鼠标没有。

2-无论我使用哪个图像作为查询/对象图像,如何在没有查询/对象图像的情况下仅显示火车/场景图像的相机预览。我问这个问题是因为,我得到的是如下图所示的东西,而我想做的是这里显示的东西,我检查了该链接中的代码,它是 C++ 但我跟着同样的事情,本教程也使用'drawMatches'方法,它在java中有一个对等点Features2D.DrawMatches(),它们都返回一个Mat对象,左侧是查询/对象图像,右侧是火车/场景图像如下图所示。

我想要做的是,要在没有查询/对象图像的情况下显示在相机输出上,我希望为相机输出指定的区域仅显示从相机捕获的火车/场景图像。

请让我知道如何解决这个问题,我想做一些我在链接中引用的教程中所示的事情。

img_1 img_2

4

1 回答 1

1

1 - 大小很重要,但在你的情况下,我认为最关键的问题是“纹理”。SURF 检测“纹理梯度”较强的兴趣点。就您的鼠标而言,渐变主要是平滑的,除了徽标(fujitsu)、按钮和图像的边框周围。在您指向的教程中,您注意到它使用了一个非常有纹理的对象来演示效果。

2 - 据我所知,有全自动方法可以做你想做的事,但只需几个步骤即可完成。基本上,您必须确定对象的周围框然后绘制它。要绘制,更容易使用 cv::rectangle,但您可以使用四个(或更多....) cv::line 更精确。要确定周围的框,您可以估计过滤匹配中的极值点。

祝你好运!

于 2015-04-16T03:42:39.217 回答