安卓平台下的OpenCV图像比对

8

我想开发一个应用程序,可以使用OpenCv识别摄像头前方的物体(如纪念碑或其他物品),然后显示相关信息。

那么问题来了,如何使用OpenCV识别物体(如纪念碑或其他物品)的形状或将其与图像进行比较?最佳方法是什么?

如果有一些关于物体检测和比较的示例或教程就更好了。

谢谢。


1
你看过哪些目标检测算法?首先,你必须为你的应用程序选择最合适的算法。根据你的算法,你可能需要使用训练数据来帮助定义最能描述你想要检测的对象的模型。计算机视觉是一个非常困难的领域,需要对该领域有很好的理解。如果你是新手,我建议你阅读一些教材。 - BDFun
1个回答

6

你所需要的最好方法是使用本地特征检测器,例如OpenCV的SIFT、SURF和ORB。

你需要至少一张想要检测的物体的图片。然后,这些算法可以将该图片与其他图片进行比较,以查看它们是否足够相似。

这里是算法的文档

  • ORB和其他算法:

http://docs.opencv.org/modules/features2d/doc/feature_detection_and_description.html

  • SURF和SIFT('nonfree'):

http://docs.opencv.org/modules/nonfree/doc/feature_detection.html

这些算法用于该任务的方式是选择每个图像的有趣点,并进行比较以查看它们是否匹配。如果找到多个匹配项,则很可能这些图像具有相同的对象。从特征检测开始,以下是教程

http://docs.opencv.org/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.html

您还可以在此处找到与此主题相关的C ++示例(示例也包含在OpenCV下载包中):

  • 例如“matching_to_many_images.cpp”
  • “video_homography.cpp”

http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/cpp

这里有一些Android Java示例代码(虽然与此无关,但也很有帮助):

http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/android

或者Python示例,实际上这些是关于该主题的更更新的示例(在撰写本文时):

http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/python2

作为最后的说明,就像评论中@BDFun所说,这并不是易于完成的。
更多-如果你想了解OpenCV特征检测和描述的概述,请查看此帖

如何使用OpenCV和Android NDK? - nawara
你有检查过这个吗?http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#native-c - Rui Marques

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接