2011-01-21 3 views
2

как я хочу отслеживать движение объекта, мне требуется силуэт последовательности изображений. Кто-нибудь знает, как это сделать? Силуэт-маска - это двоичное изображение с ненулевыми пикселями, где происходит движениенайти изображение силуэт используя openCV

ответ

5

Вы можете использовать технику вычитание фона. Вот два способа сделать это.

  1. Вычесть предыдущий кадр из текущего кадра. Только пиксели в обоих кадрах, которые не изменились, приведут к нулю. См. cvSub, cvAbsDiff.
  2. Поддержание среднего уровня видеокадров. См. Функцию cvRunningAvg в разделе Motion Analysis and Object Tracking документов OpenCV. Для каждого нового кадра вычтите текущее среднее значение из текущего кадра. Когда все будет готово, обновите текущее среднее текущим фреймом.

После того, как с помощью одного из указанных выше способов, вы могли бы сегмент полученного разностного изображения с использованием cvThreshold или cvAdaptiveThreshold. Это приведет к бинарному изображению, в идеале с нулем, где изображение было статическим, и 1 или 255, где было движение.

Хотя вы не упомянули об этом в своем вопросе, вы можете перейти к вычислению контура бинарного изображения. Для этого есть cvFindContours.

2

Посмотрите на это: Tracking colored objects in OpenCV

+0

хорошая ссылка !! спасибо! –

+1

+1 Для того, чтобы стать автором такого учебного блога. – karlphillip

+0

Ха-ха! Большое спасибо! –

Смежные вопросы