поиск силуэта изображения с помощью openCV - PullRequest
2 голосов
/ 21 января 2011

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

Ответы [ 2 ]

5 голосов
/ 21 января 2011

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

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

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

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

2 голосов
/ 24 января 2011
...