我想开发一个应用程序,它将使用OpenCv
识别相机前的物体(如纪念碑或其他东西),然后它将显示有关它的信息。
所以问题是如何识别物体(如纪念碑或其他东西)的形状或与图像进行比较OpenCV
?
最好的方法是什么?
如果有某种用于对象检测和比较的示例或教程,那就太好了。
谢谢。
最好的方法是使用本地特征检测器,例如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功能检测和描述的概述,请查看这篇文章。