2012-03-02 2 views
1

Im используя opencv 2.0 с cvblob.h в VS2010, и я сделал программу, которая обнаруживает желтые капли. Теперь то, что я хочу сделать, - это число тех блобов, что бы они ни двигались. Я знаю, что свойство label полезно для их числа, но я пробовал его, и когда один blob перемещается, метки меняются. Как я могу удерживать «начальные» номера ярлыков?Как я могу удерживать метку blobs на cvblob?

+0

я решил. Как вы сказали, я реализовал простую систему отслеживания нескольких объектов в области капли, которые перемещаются только по двум измерениям, поэтому их области не меняются. – Tapia

ответ

1

Что вы хотите отслеживать капли. Отслеживание blobs означает, что вы отслеживаете капли от кадра к кадру. Таким образом, у вас будет число, которое идентифицирует движущиеся объекты (капли с течением времени).

Для этого вы должны закодировать собственный алгоритм отслеживания (в зависимости от конкретной проблемы) или использовать функции отслеживания, которые поставляются с cvBlob, которые далеки от совершенства, но полезны для целей тестирования.

У вас есть образцы кода в пакете cvBlob. В частности:

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

0

Говоря, что вы хотите, чтобы капли сохраняли свои первоначальные метки, вы по существу пытаетесь их отслеживать. Это будет означать внедрение системы отслеживания нескольких объектов. Поверьте, это не так просто, как вы думаете.

Вам необходимо установить какое-то соответствие между кадрами.

В случае, если капли не слишком сильно меняются между кадрами, вы можете попробовать найти геометрические центры каждого блоба в одном кадре, а в кадре с эффектом можно попробовать найти ближайший к центру центр, найденный в предыдущем кадре. Затем назначьте предыдущую метку новым блокам. И так далее ...

+0

Да, у меня есть код, где я отслеживаю 2 капли (зная их позицию), но когда я меняю свое положение на камеру, их ярлыки меняются. Есть ли способ «сохранить» ярлык каждого блоба? – Tapia

+0

Маркировка, выполняемая библиотечной функцией, основана на том, какой blob она обнаруживает первым. Если вы ожидаете, что метка не изменится, это означает, что вы ожидаете, что алгоритм обнаружения blob будет отслеживать ваши капли. Что не произойдет – bubble