- Вызвать
cvAbsDiff
в последовательных кадрах (может быть в каждом n
-м и (n - gap)
-ом кадре), чтобы обнаружить изменения и использовать пороговое значение для получения маски изменений
- Для каждого кадра вызовите
cvUpdateMotionHistory
и передайте полученную маску в качестве аргумента
- Чтобы получить сегменты движения (объекты) и их ориентацию:
- вызов
cvCalcMotionGradient
прохождение истории движения, накопленной предыдущими вызовами
- Разбить движение на сегменты по
cvSegmentMotion
и для каждого сегмента вычислить угол, используя cvCalcGlobalOrientation
Подобные шаги кодируются в примере motempl.c
, распространяемом в библиотеке OpenCV.
Обновление
Я думал, что они реализовали почти полную привязку OpenCV и различия в интерфейсе являются результатом добавления ООП. Например, вот метод AbsDiff . Однако вещи, связанные с движением, имеют другую структуру. Используйте метод MotionInfo
, чтобы получить угол движения, как в этом примере (который я нашел с помощью поиска Google).