Как я могу определить направление и количество объектов с помощью Emgu?

#c# #opencv #video-processing #emgucv

#c# #opencv #обработка видео #emgucv

Вопрос:

Как я могу определить направление и количество объектов с помощью Emgu?

Объекты движутся во всех направлениях (2D); и камера видит эти объекты (на 2D поверхности). Объект может иметь небольшие различия в форме, но достаточно похож.

Спасибо

Ответ №1:

  1. Вызывайте cvAbsDiff на последовательных кадрах (может быть на каждом n -м и (n - gap) -ом кадрах) для обнаружения изменений и используйте пороговое значение, чтобы получить маску изменений
  2. Для каждого кадра вызывайте cvUpdateMotionHistory и передавайте полученную маску в качестве аргумента
  3. Чтобы получить сегменты движения (объекты) и их ориентацию:
    1. вызов cvCalcMotionGradient передает историю движения, накопленную предыдущими вызовами
    2. Разделите движение на сегменты с помощью cvSegmentMotion и для каждого сегмента вычислите угол, используя cvCalcGlobalOrientation

Аналогичные шаги закодированы в motempl.c примере, распространяемом в библиотеке OpenCV.

Обновить

Я думал, что они реализовали почти полную привязку OpenCV, а различия в интерфейсе являются результатом добавления ООП. Например, вот метод AbsDiff. Однако материал, связанный с движением, имеет другую структуру. Используйте MotionInfo метод для определения угла движения, как в этом примере (который я нашел с помощью поиска Google).

Комментарии:

1. Не могли бы вы, пожалуйста, описать это с помощью EmguCV. Я не знаю C, и EmguCV отличается от OpenCV. И поскольку я разрабатываю на C #, мне нужен EmguCV — как .NET-оболочка вокруг OpenCV. Но EmguCV имеет другие классы и методы, чем вы назвали : (