9

Для отслеживания объекта на видеокадре, прежде всего, я извлекаю кадры изображений из видео и сохраняю эти изображения в папке. Затем я должен обработать эти изображения, чтобы найти объект. На самом деле я не знаю, насколько это практично, потому что весь алгоритм сделал это на один шаг. Это верно?Как найти объект на видео с помощью OpenCV

+2

Является ли ваш алгоритм слишком медленным для обработки видео в реальном времени? – karlphillip

ответ

9

Ну, ваш подход потребует много места на вашем диске в зависимости от размера видео и размера кадров, плюс вы потратите значительное количество времени на чтение кадров с диска.

Вы пытались выполнить обработку видео в реальном времени? Если алгоритм не слишком медленно, есть некоторые сообщения, которые показывают то, что вам нужно сделать:

  • This post демонстрирует, как использовать интерфейс C в OpenCV для выполнения функции для преобразования кадров, захваченных веб-камерой (на лету) в оттенки серого и отображает их на экране;
  • This post показывает простой способ определения квадрата в изображении с использованием интерфейса C++;
  • This post - небольшое изменение вышеприведенного и показывает, как определить лист бумаги;
  • This thread показывает несколько различных способов выполнения расширенного определения квадратов.

Я надеюсь, что вы способны преобразовывать код из интерфейса C в интерфейс C++.

+0

Сэр Большое спасибо за ваш ответ. Да, теперь я понял, что использование двух шагов займет больше времени. поэтому я подумал, что использование одного шага подходит для проекта в реальном времени. Сэр, в соответствии с вашим ответом http://stackoverflow.com/questions/3907028/opencv-every-frame-processing/3919216#3919216 я изучил процесс обработки видео, но я не мог понять, как отслеживать объект из обработанного видеокадр. не могли бы вы объяснить, как определить объект этого обработанного видеокадра. и сэр, я был бы рад, если бы вы предоставили некоторую кодировку на C++-интерфейсе. – Thar1988

+0

сэр, не могли бы вы объяснить, что для этого требуются отдельные два потока для записи как части обработки видеофрагмента, так и части отслеживания объекта в одной программе. я был бы рад, если бы вы дали пример для этого. – Thar1988

+0

Давайте оставим один вопрос в каждой теме, вы начнете захватывать свою тему. Если у вас есть другие вопросы, не стесняйтесь спрашивать их в отдельных потоках. Stackoverflow не нацелен на поддержку 1x1. Я кратко изложил, что нужно сделать, и предоставил несколько ссылок на код. Для вас очень мало дел. Здесь есть и другие сообщения, которые говорят о внедрении многопоточной системы для захвата и обработки кадров с камеры с помощью OpenCV. ключевое слово: [круговой буфер] (http://stackoverflow.com/questions/10535182/advice-for-real-time-image-processing/10536166#10536166). – karlphillip

5

Нет смысла хранить фреймы видео, если вы используете OpenCV, так как у него есть действительно удобные методы для захвата кадров из камеры/сохраненного видео в реальном времени.

В этом post у вас есть пример кода для захвата кадров из видео.

Затем, если вы хотите обнаружить объекты на этих кадрах, вам необходимо обработать каждый кадр с помощью алгоритма обнаружения. В OpenCV приведен пример кода, связанного с темой. Вы можете попробовать использовать алгоритм SIFT, например, для обнаружения изображения.

+0

Сэр Спасибо за ваш ответ. Да. Теперь я понимаю, что нет смысла делать два шага (сначала сохраняя фреймы, а затем отслеживать объект для этого фрейма). алгоритм SIFT должен делать с помощью matlab и java? – Thar1988

+0

Да, если вы используете SIFT, он будет работать. Я думаю, что Matlab должен быть медленнее, но здорово играть с данными и изучать этот процесс. Отладка OpenCV немного раздражает. –

+0

, но дело в том, что проект реализует использование opencv и C++. есть ли хорошие алгоритмы, которые можно использовать для opencv – Thar1988