Насколько мощный OpenGL? - PullRequest
       22

Насколько мощный OpenGL?

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

Я хочу создать приложение, которое будет снимать одно на камеру и будет манипулировать живыми изображениями, снятыми им в миллисекундах.

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

У меня есть несколько вопросов:

Есть ли у OpenGL такая возможность изменять живые изображения таким образом, что это изменит мою одежду на компьютерном изображении? Я буду двигать руками и тому подобным, может ли это быть настолько точным, чтобы это выглядело так, будто я нахожусь в переодетой одежде, а не в оригинальной одежде?

Ответы [ 4 ]

8 голосов
/ 22 января 2011

Это не вопрос силы.OpenGL для рендеринга 3D-графики.То, что вы хотите, это в области компьютерного зрения и дополненной реальности.Используйте правильный инструмент для этой задачи.Возможно, вы захотите взглянуть на OpenCV.

4 голосов
/ 22 января 2011

OpenGL - библиотека рендеринга;Его цель - рисовать вещи на экране.Вероятно, его можно использовать как часть решения вашей проблемы, но только как часть рендеринга.Ваша проблема также требует некоторой довольно серьезной обработки изображений, чтобы взять исходное изображение с камеры, распознать тело человека и все его различные части и позы, а затем сузить это до одежды.Вы носите, например, плащ, а сменный наряд (подлежащий обработке) - это что-то облегающее, как профессиональный костюм для катания на коньках?Очевидно, что процесс замены требует информации, которая недоступна из исходного изображения, в этом случае.Для этого требуется либо предварительно сгенерированная база данных, которая описывает ваше тело, либо ограничение диапазона возможных сменных нарядов (возможно, просто изменение рисунка и / или цвета плаща).* OpenCV , и что люди делают с контроллером Kinect .Это будет нелегко.

4 голосов
/ 22 января 2011

OpenGL может очень быстро добавить одежду. Это даже не начнет напрягать его способность комбинировать изображения.

Однако у вас может быть неправильное представление о том, что именно он может для вас сделать. Он может смешивать изображения, но вы должны будете точно сказать, , где вытащить свою одежду, как ее деформировать и т. Д., И вам придется самому разобраться в этом. OpenGL не поможет вам узнать, где находится рука человека.

3 голосов
/ 22 января 2011

Я думаю, что вопрос больше в мощности современных видеокарт (GPU), чем в OpenGL.OpenGL - это просто API для доступа к мощности графического процессора.

Сегодня графические процессоры очень мощные ( смотрите мой любимый и уже немного устаревший график ), и я думаю, что они могут справиться с задачей, которую выхотите от них достаточно быстро.

Ваша цель очень (очень) амбициозна - вам нужно изменить алгоритмы компьютерного зрения, чтобы они хорошо работали на графических процессорах (распараллеливать их) и использовать их для обнаружения сегментов с одеждой, а затем заменитьэти сегменты.Любой из этих задач будет достаточно для магистерской диссертации.

OpenGL может помочь вам выполнить эту работу, но вы должны сами написать все алгоритмы, используя шейдеры (в GLSL) и рендеринг в текстуру.

В отличие от других, я бы не рекомендовал использовать OpenCV, поскольку он имеет ряд серьезных недостатков для вашего использования:

  • Это медленный процесс, и вы не достигнете интерактивной частоты кадров для своей задачи, если у вас нет очень мощного процессора
  • Он не использует мощность графического процессора (по крайней мере, стабильную версию)
  • API не интуитивно понятен - OpenCV - это скорее список реализованных алгоритмов CV, чем инфраструктура.Вам все еще нужно знать, как алгоритмы работают под капотом, чтобы правильно его использовать.
...