在 Android 上使用 OpenCV 在实时摄像头预览中进行实时徽标检测
Real time logo detection in live camera preview with OpenCV on Android
我是计算机视觉的新手,但我正在尝试编写一个 android 应用程序来执行以下操作:
获取实时相机预览并尝试在其中检测一个徽标(我的资源中有徽标)。实时。如果找到,请在徽标周围画一个矩形。如果没有匹配,则不绘制矩形。
我已经尝试了一些方法,包括使用 ORB 进行模板匹配和特征检测。
为什么不起作用:
模板匹配:
缩放和旋转问题。我尝试了它的多尺度变体,但是 a) 性能真的很差 b) 矩形当然总是显示为试图搜索图像。无法在代码中实际确认是否找到徽标。
ORB特征检测:
也很慢(5-6 fps)但它工作正常。另一个问题是我也永远无法确定徽标是否在图片中。即使徽标不在图片中,ORB 也会随机找到匹配项。
就像我说的,我对此很陌生。我将不胜感激关于什么是最好的实现方式的帮助:
确认图片A(约200x200像素)是否在相机图片(约600x600像素)的ROI内。
每帧不应超过 50 毫秒。我不知道那是否可能。因此,如果正确的方法需要比这更长的时间,我会在一个单独的线程中完成工作,并且只分析每五个相机帧左右。
将不胜感激有关如何实现该目标的任何提示或代码示例。谢谢!
对于徽标检测,我强烈建议使用 OpenCV HaarClassifier。从徽标图像集合或具有许多变形的徽标图像生成训练样本很容易。
如果您可以使用一些规则,例如要检测的徽标的最小和最大尺寸,以及图像上可能出现徽标的区域,您可以运行 检测器的速度比你用ORB提到。
我是计算机视觉的新手,但我正在尝试编写一个 android 应用程序来执行以下操作:
获取实时相机预览并尝试在其中检测一个徽标(我的资源中有徽标)。实时。如果找到,请在徽标周围画一个矩形。如果没有匹配,则不绘制矩形。
我已经尝试了一些方法,包括使用 ORB 进行模板匹配和特征检测。
为什么不起作用:
模板匹配: 缩放和旋转问题。我尝试了它的多尺度变体,但是 a) 性能真的很差 b) 矩形当然总是显示为试图搜索图像。无法在代码中实际确认是否找到徽标。
ORB特征检测: 也很慢(5-6 fps)但它工作正常。另一个问题是我也永远无法确定徽标是否在图片中。即使徽标不在图片中,ORB 也会随机找到匹配项。
就像我说的,我对此很陌生。我将不胜感激关于什么是最好的实现方式的帮助:
确认图片A(约200x200像素)是否在相机图片(约600x600像素)的ROI内。
每帧不应超过 50 毫秒。我不知道那是否可能。因此,如果正确的方法需要比这更长的时间,我会在一个单独的线程中完成工作,并且只分析每五个相机帧左右。
将不胜感激有关如何实现该目标的任何提示或代码示例。谢谢!
对于徽标检测,我强烈建议使用 OpenCV HaarClassifier。从徽标图像集合或具有许多变形的徽标图像生成训练样本很容易。
如果您可以使用一些规则,例如要检测的徽标的最小和最大尺寸,以及图像上可能出现徽标的区域,您可以运行 检测器的速度比你用ORB提到。