Как вы можете отслеживать движение с помощью камеры iPhone? - PullRequest
16 голосов
/ 14 октября 2010

Я видел, что кто-то создал приложение, которое отслеживает ваши ноги с помощью камеры, чтобы вы могли играть в виртуальный футбол на экране вашего iPhone.

Как ты мог сделать что-то подобное?Кто-нибудь знает примеры кода или другую информацию об использовании камеры iPhone для обнаружения объектов и отслеживания их?

Ответы [ 2 ]

32 голосов
/ 24 октября 2010

Я только что выступил с докладом на SecondConf, где продемонстрировал использование камеры iPhone для отслеживания цветных объектов с помощью шейдеров OpenGL ES 2.0.Пост, сопровождающий этот доклад, включая мои слайды и пример кода для всех демонстраций, можно найти здесь .

Образец приложения, которое я написал, код которого можно загрузить с здесь , основан на примере, созданном Apple для демонстрации Core Image на WWDC 2007. Этот пример описан в главе 27 книги GPU Gems 3 .

Основная идея заключается в том, что выМожно использовать собственные шейдеры GLSL для обработки изображений с камеры iPhone в режиме реального времени, определяя, какие пиксели соответствуют целевому цвету в пределах заданного порога.Затем эти пиксели имеют свои нормализованные координаты X, Y, встроенные в их красные и зеленые цветовые компоненты, тогда как все остальные пиксели помечаются как черные.Затем цвет всего кадра усредняется, чтобы получить центр тяжести цветного объекта, который можно отслеживать при его перемещении по виду камеры.

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

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

3 голосов
/ 15 октября 2010

Я успешно отслеживал лица и глаза с помощью OpenCV на iPhone.Вот хорошее место для начала: http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en

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

...