【发布时间】:2011-10-05 06:46:36
【问题描述】:
最近,我参与了机器人项目;我的机器人可以通过颜色检测物体,但我发现对于不同的物体来说不够好。因此,我希望机器人对图像进行实时冲浪,以找到将使用其模板定义的目标对象。
不幸的是,我不知道如何将模板的关键点与其在图像中的图像匹配。
【问题讨论】:
标签: c++ opencv computer-vision surf object-detection
最近,我参与了机器人项目;我的机器人可以通过颜色检测物体,但我发现对于不同的物体来说不够好。因此,我希望机器人对图像进行实时冲浪,以找到将使用其模板定义的目标对象。
不幸的是,我不知道如何将模板的关键点与其在图像中的图像匹配。
【问题讨论】:
标签: c++ opencv computer-vision surf object-detection
在你的OpenCV目录下的sample目录中有一个很好的例子可以知道如何使用SURF:OpenCV/samples/c/find_obj.cpp
您需要使用 SURF 描述符(参见第 245-255 行)
CvSeq *objectKeypoints = 0, *objectDescriptors = 0;
CvSURFParams params = cvSURFParams(500, 1);
cvExtractSURF(object, 0, &objectKeypoints, &objectDescriptors, storage, params);
您应该使用 CvSeqReader 读取描述符:
CvSeqReader reader;
cvStartReadSeq(descriptors, &reader, 0);
对场景做同样的事情,并使用神经网络搜索中的两个描述符来找到它们之间的匹配。 再次,OpenCV 给出的示例应该对你有很大帮助:)
【讨论】: