用于ANDROID图像比较的OpenCV

J1a*_*nd1 7 android opencv image-processing computer-vision object-recognition

我想开发应用程序,它将识别出现在相机前面的对象(如纪念碑或其他东西)OpenCv,然后它将显示有关它的信息.

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

如果存在用于对象检测和比较的某种样本或教程,那将是很好的.

谢谢.

Rui*_*ues 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功能检测和描述的概述,请查看此文章.