2012-03-02 76 views
1

我在VS2010中使用opencv 2.0和cvblob.h,並且製作了一個檢測黃色斑點的程序。現在我想要做的就是對這些斑點進行編號,不管它們是否移動。我知道標籤屬性對於編號有用,但我已經嘗試過,當一個blob被移動時,標籤會改變。我怎樣才能保存「初始」標籤號碼?如何在cvblob上放置blob標籤?

+0

我解決它。正如你所說,我基於斑點區域實現了一個簡單的多目標跟蹤系統,它只能在二維上移動,所以它們的區域不會改變。 – Tapia 2012-04-16 21:14:17

回答

1

你想要的是跟蹤斑點。跟蹤斑點意味着你跟蹤幀與幀之間的斑點。這樣,你將有一個數字來標識移動的對象(隨着時間的推移blob)。

要做到這一點,您必須編寫自己的跟蹤算法(根據您的具體問題)或使用cvBlob附帶的跟蹤功能,這些功能遠非完美但對測試有用。

你有cvBlob包中的代碼示例。特別是:

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

0

通過說你想要blob堅持他們的初始標籤,你基本上試圖跟蹤他們。這相當於實現一個多目標跟蹤系統。相信我並不像你想象的那麼簡單。

您需要在幀之間建立某種對應關係。

如果幀之間的斑點變化不太大,您可以嘗試在一幀中找到每個斑點的幾何中心,並在隨後的幀中嘗試找到距前一幀中心最近的斑點。然後將以前的標籤分配給新的斑點。 依此類推......

+0

是的,我有一個代碼跟蹤2個斑點(知道他們的位置),但是當我在相機上交換他們的位置時,他們的標籤會改變。有沒有辦法「保留」每個斑點的標籤? – Tapia 2012-03-05 21:33:37

+0

由庫函數完成的標籤是基於它首先檢測到的blob。如果您希望標籤不要更改,則意味着您期望blob檢測算法也可以跟蹤您的斑點。哪些不會發生 – bubble 2012-03-06 02:41:05