Я работал с CvBlobTrackerAuto
в последние несколько недель. Вот некоторые вещи, которые я выяснил.
CvBlobTrackerAuto::Process
используется для обработки последнего захваченного изображения с целью обновления информации об отслеживании (идентификаторы и позиции BLOB-объектов). На самом деле, CvBlobTrackerAuto
является абстрактным классом, поскольку он не обеспечивает реализацию для CvBlobTrackerAuto::Process
. Единственная конкретная реализация (насколько я могу судить) - это CvBlobTrackerAuto1
, которую можно найти в blobtrackingauto.cpp.
Что CvBlobTrackerAuto1::Process
делает для реализации следующего конвейера:
- Обнаружение переднего плана: создает двоичную маску, соответствующую переднему плану.
- Отслеживание BLOB-объектов: обновляет положение BLOB-объектов. Он может использовать среднее смещение, фильтры частиц или их комбинацию.
- Постобработка: (Я не уверен в том, что делает этот раздел).
- Удаление BLOB-объектов: это «экспериментально и просто», согласно комментарию. Удаляет капли, которые были слишком маленькими или находились вблизи границ изображения в последних кадрах.
- Обнаружение BLOB-объектов: обнаружение новых BLOB-объектов. См .ringingblobdetection.cpp.
- Формирование траектории: (не уверен в том, что он делает).
- Отслеживание анализа: (не уверен, что он делает. Но я помню, что прочитал код и решил, что он не влияет на отслеживание BLOB-объектов, поэтому я отключил его.)
В этой конкретной реализации CvBlobTrackerAuto::Process
параметр pMask
вообще используется ни для чего. Он имеет значение по умолчанию NULL и назначается переменной один раз, но будет перезаписан через несколько строк.
Пример OpenCv, который можно найти в samples / c / blobtrack_sample.cpp, построен вокруг этого класса CvBlobTrackerAuto1
, предоставляя различные параметры каждому модулю в конвейере.
Надеюсь, это поможет.