8

我想开发一个应用程序,它可以识别出现在相机前面的物体(如纪念碑或其他东西)OpenCv,然后它会显示有关它的信息。

所以问题是如何识别物体(如纪念碑或其他东西)的形状或与图像进行比较OpenCV
这样做的最佳方法是什么?

如果有某种用于对象检测和比较的示例或教程会很好。

谢谢你。

4

1 回答 1

6

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

您需要至少一张来自要检测的对象的图片。之后,这些算法可以将该图像与其他图像进行比较,看看它们是否足够相似。

这是算法的文档

  • ORB 和其他:

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

  • SURF 和 SIFT(“非自由”):

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 特征检测和描述的概述,请查看这篇文章

于 2012-06-15T09:00:53.267 回答