我是计算机视觉的新手,但我正在尝试编写一个能够执行以下操作的Android应用程序:
获取实时相机预览并尝试检测其中的一个徽标(我的资源中有徽标)。实时。如果找到,请在徽标周围绘制一个矩形。如果没有匹配,请不要绘制矩形。
我已经尝试了一些方法,包括使用ORB进行模板匹配和特征检测。
为什么不起作用:
模板匹配: 缩放和旋转的问题。我尝试了它的多尺度变体,但a)性能非常糟糕b)矩形当然总是显示试图搜索图像。如果找到徽标,则无法在代码中实际确认。
ORB特征检测: 也很慢(5-6 fps),但它工作正常。另一个问题是,我也无法确定徽标是否在图片中。即使徽标不在图片中,ORB也会发现随机匹配。
像我说的那样,我对此很新。我希望得到最佳实现方式的帮助:确认图片A(约200x200像素)是否在相机图片的投影仪中(大约600x600像素)。
每帧不超过50毫秒。我不知道那是否可能。因此,如果一个正确的方法比这更长,我只需要在一个单独的线程中完成工作,并且只分析每个第五个相机帧左右。
非常感谢有关如何实现这一目标的任何提示或代码示例。谢谢!
答案 0 :(得分:2)
通过徽标检测,我强烈推荐使用OpenCV HaarClassifier。可以很容易地从徽标图像集合中生成训练样本,或者生成一个具有许多扭曲的徽标图像。
如果您可以使用一些规则,例如要检测的徽标的最小和最大尺寸,以及图像上可能出现的区域,您可以以比您提到的ORB更好的速度运行检测器。< / p>