Я только что поговорил на SecondConf, где продемонстрировал использование камеры iPhone для отслеживания цветного объекта с использованием шейдеров OpenGL ES 2.0. Сообщение, сопровождающее этот разговор, включая мои слайды и пример кода для всех демонстраций, можно найти here.
Образец приложения, которое я написал, код которого можно загрузить с here, основан на примере, выпущенном Apple для демонстрации Core Image на WWDC 2007. Этот пример описан в Chapter 27 of the GPU Gems 3 book.
Основная идея заключается в том, что вы можете использовать собственные шейдеры GLSL для обработки изображений с камеры iPhone в реальном времени, определяя, какие пиксели соответствуют целевому цвету в пределах заданного порога. Затем эти пиксели имеют свои нормализованные координаты X, Y, встроенные в их красные и зеленые цветовые компоненты, тогда как все остальные пиксели отмечены как черные. Затем цвет всего кадра усредняется для получения центроида цветного объекта, который вы можете отслеживать, когда он перемещается по экрану камеры.
Хотя это не относится к случаю отслеживания более сложного объекта, такого как нога, шейдеры, подобные этому, должны быть в состоянии писать, чтобы выбрать такой движущийся объект.
Как обновление до вышесказанного, за два года с тех пор, как я написал это, я разработал an open source framework, который инкапсулирует обработку шейдеров OpenGL ES 2.0 изображений и видео. Одним из последних дополнений к этому является класс GPUImageMotionDetector, который обрабатывает сцену и обнаруживает в ней любые движения. Это даст вам обратно центроид и интенсивность общего движения, которое он обнаруживает как часть простого блока обратного вызова. Использование этой структуры для этого должно быть намного проще, чем развертывание собственного решения.
Ничего себе, много уважения! Я буду использовать это, если вы не против,) – Eimantas
Это классно .. возможно ли построить такой интерфейс, как кинематика xbox? :) Im ищет быстрый легкий код, чтобы положить в мое приложение iphone, например http://www.soundstep.com/blog/experiments/jsdetection/ .. было бы здорово, если бы это было возможно с помощью мобильной сети, хотя –
@CarlLindberg - Kinect использует проецируемый структурированный инфракрасный свет для выполнения трехмерного отображения среды, поэтому вы, очевидно, не собираетесь сопоставлять это с цветной камерой на устройстве iOS. Обнаружение грубых движений, которое я до сих пор не отслеживаю руками или пальцами, для этого вам нужно будет исследовать методы оптического потока или отслеживания объектов. Привлечение тех, кто работает на живое видео, будет довольно сложной задачей. –