Как я могу держать ярлык с каплями на cvblob? - PullRequest
1 голос
/ 03 марта 2012

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

Ответы [ 2 ]

1 голос
/ 07 марта 2012

То, что вы хотите, это отслеживать капли. Отслеживание 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

0 голосов
/ 04 марта 2012

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

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

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

...