如何在cvblob上保存blob标签?

时间:2012-03-02 21:58:07

标签: c++ visual-studio-2010 opencv blobs

我在VS2010中使用opencv 2.0和cvblob.h,我制作了一个检测黄色斑点的程序。现在我想要做的就是对那些斑点进行编号,无论它们是否移动。我知道label属性对于它们的数字很有用,但我已经尝试过了,当移动一个blob时,标签会发生变化。如何保存“初始”标签号?

2 个答案:

答案 0 :(得分:1)

你想要的是跟踪blob。跟踪blob意味着您可以逐帧跟踪blob。通过这种方式,您将获得一个识别移动对象的数字(blob随着时间的推移)。

要做到这一点,你必须编写自己的跟踪算法(根据你的具体问题)或使用cvBlob附带的跟踪功能,这些功能远非完美,但对测试目的很有用。

您在cvBlob包中有代码示例。特别是:

http://cvblob.googlecode.com/svn/trunk/samples/red_object_tracking.cpp   http://cvblob.googlecode.com/svn/trunk/test/test_tracking.cpp

答案 1 :(得分:0)

通过说你希望blob能够保留他们的初始标签,你实际上是在尝试跟踪它们。这相当于实现了一个多目标跟踪系统。相信我并不像你想象的那么简单。

您需要在帧之间建立某种对应关系。

如果帧之间的斑点变化不大,您可以尝试在一帧中找到每个斑点的几何中心,在后续帧中,您可以尝试找到最接近前一帧中心的斑点。然后将以前的标签分配给新的blob。 等等......