首页 文章

opencv中类cv :: KeyPoint的类成员class_id的含义和用法是什么?

提问于
浏览
2

在OpenCV 2.4.3的参考手册中, KeyPoint::class_id 被描述为"object id that can be used to clustered keypoints by an object they belong to" .

由于缺乏我对'keypoint'的充分了解,我无法理解 class_id 的目的是什么 .

我的另一个问题是,通过使用特征检测器,描述符和匹配器,我们可以检测训练图像中查询对象的匹配关键点 . 但是如何在训练图像中分割出查询对象 . 我们可以使用抓取或分水岭算法吗?如果有,怎么样?

回答任何一个问题都会有所帮助 .

提前致谢...

2 回答

  • 3

    实际上, class_id 成员字段可用于存储您发现对每个关键点有用的任何信息 . 正如文档所述,您可以存储检测到的对象的id .

    例如,你有一个图像,从中提取关键点(例如使用SURF),运行一些具有这些功能的对象检测器,结果是每个输入要素现在包含在 class_id 中相应对象的id,如果它们是-1,则为-1没有任何对象 . 我实际上并不知道这个字段是否被某些OpenCV函数填充,或者只是供您使用 .

    关于第二个问题,匹配功能可能不足以分割您的对象,因为功能可以位于对象内部,因此您无法获得有关轮廓的任何信息 . 但是,如果您有关于该对象的更多信息,这是一个很好的起点 . 例如,如果您知道对象是平面(墙上的海报),则可以使用要素匹配来计算输入和训练图像之间的单应性 . 这会给你一个大纲 . 或者,例如,大量紧密匹配的特征可以指示对象的存在 . 由此,您可以尝试其他颜色分割,边缘匹配等 .

  • 0

    我找到了一个关键点的 class_id 的简短描述 .

    OpenCV说:

    class_id 是对象ID,可用于通过它们所属的对象对关键点进行聚类 .

    这是link.

    希望这会有所帮助 .

相关问题