如何通过 SURF 将模板与原始图像进行匹配?

发布于 2024-12-08 18:18:31 字数 127 浏览 1 评论 0原文

最近,我参与了机器人项目;我的机器人可以通过颜色来检测物体,但我发现对于不同的物体来说这还不够好。因此,我希望机器人实时浏览图像以找到将使用其模板定义的目标对象。

不幸的是,我不知道如何将模板的关键点与其图像中的图像相匹配。

Recently, I have worked with robotics project; my robot can detect the object by its colour but I found that not good enough for different object. Therefore, I want the robot SURF the image on real time to find the target object that will be defined using its template.

Unfortunately, I don’t know how to match the key points of the template with its image in the image.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拧巴小姐 2024-12-15 18:18:31

在 OpenCV 目录的示例目录中有一个非常好的示例来了解如何使用 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);

对场景执行相同的操作,并使用 NN 搜索中的两个描述符来查找它们之间的匹配。
再次强调,OpenCV 提供的示例应该对您有很大帮助:)

There is a very good example to know how to use SURF in the sample directory in your OpenCV directory: OpenCV/samples/c/find_obj.cpp

You need to use the SURF descriptors (see lines 245-255)

CvSeq *objectKeypoints = 0, *objectDescriptors = 0;
CvSURFParams params = cvSURFParams(500, 1);
cvExtractSURF(object, 0, &objectKeypoints, &objectDescriptors, storage, params);

You should read the descriptors with a CvSeqReader:

CvSeqReader reader;
cvStartReadSeq(descriptors, &reader, 0);

Do the same thing with scene and use the two descriptors in NN search to find the match between them.
One again, the sample given by OpenCV should help you a lot :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文