#c# #opencv #video-processing #emgucv
#c# #opencv #обработка видео #emgucv
Вопрос:
Как я могу определить направление и количество объектов с помощью Emgu?
Объекты движутся во всех направлениях (2D); и камера видит эти объекты (на 2D поверхности). Объект может иметь небольшие различия в форме, но достаточно похож.
Спасибо
Ответ №1:
- Вызывайте
cvAbsDiff
на последовательных кадрах (может быть на каждомn
-м и(n - gap)
-ом кадрах) для обнаружения изменений и используйте пороговое значение, чтобы получить маску изменений - Для каждого кадра вызывайте
cvUpdateMotionHistory
и передавайте полученную маску в качестве аргумента - Чтобы получить сегменты движения (объекты) и их ориентацию:
- вызов
cvCalcMotionGradient
передает историю движения, накопленную предыдущими вызовами - Разделите движение на сегменты с помощью
cvSegmentMotion
и для каждого сегмента вычислите угол, используяcvCalcGlobalOrientation
- вызов
Аналогичные шаги закодированы в motempl.c
примере, распространяемом в библиотеке OpenCV.
Обновить
Я думал, что они реализовали почти полную привязку OpenCV, а различия в интерфейсе являются результатом добавления ООП. Например, вот метод AbsDiff. Однако материал, связанный с движением, имеет другую структуру. Используйте MotionInfo
метод для определения угла движения, как в этом примере (который я нашел с помощью поиска Google).
Комментарии:
1. Не могли бы вы, пожалуйста, описать это с помощью EmguCV. Я не знаю C, и EmguCV отличается от OpenCV. И поскольку я разрабатываю на C #, мне нужен EmguCV — как .NET-оболочка вокруг OpenCV. Но EmguCV имеет другие классы и методы, чем вы назвали : (