在Android上使用OpenCV进行实时相机预览中的实时徽标检测

时间:2017-08-29 16:18:35

标签: java android opencv feature-detection template-matching

我是计算机视觉的新手,但我正在尝试编写一个能够执行以下操作的Android应用程序:

获取实时相机预览并尝试检测其中的一个徽标(我的资源中有徽标)。实时。如果找到,请在徽标周围绘制一个矩形。如果没有匹配,请不要绘制矩形。

我已经尝试了一些方法,包括使用ORB进行模板匹配和特征检测。

为什么不起作用:

模板匹配: 缩放和旋转的问题。我尝试了它的多尺度变体,但a)性能非常糟糕b)矩形当然总是显示试图搜索图像。如果找到徽标,则无法在代码中实际确认。

ORB特征检测: 也很慢(5-6 fps),但它工作正常。另一个问题是,我也无法确定徽标是否在图片中。即使徽标不在图片中,ORB也会发现随机匹配。

像我说的那样,我对此很新。我希望得到最佳实现方式的帮助:

  • 确认图片A(约200x200像素)是否在相机图片的投影仪中(大约600x600像素)。

  • 每帧不超过50毫秒。我不知道那是否可能。因此,如果一个正确的方法比这更长,我只需要在一个单独的线程中完成工作,并且只分析每个第五个相机帧左右。

非常感谢有关如何实现这一目标的任何提示或代码示例。谢谢!

1 个答案:

答案 0 :(得分:2)

通过徽标检测,我强烈推荐使用OpenCV HaarClassifier。可以很容易地从徽标图像集合中生成训练样本,或者生成一个具有许多扭曲的徽标图像。

如果您可以使用一些规则,例如要检测的徽标的最小和最大尺寸,以及图像上可能出现的区域,您可以以比您提到的ORB更好的速度运行检测器。< / p>