Ответ 1
Я только что поговорил на SecondConf, где продемонстрировал использование камеры iPhone для отслеживания цветного объекта с использованием шейдеров OpenGL ES 2.0. Сообщение, сопровождающее этот разговор, включая мои слайды и образец кода для всех демонстраций, можно найти здесь.
Образец приложения, которое я написал, код которого можно загрузить из здесь, основан на примере, выпущенном Apple для демонстрации Core Image на WWDC 2007. Этот пример описан в Глава 27 книги GPU Gems 3.
Основная идея заключается в том, что вы можете использовать собственные шейдеры GLSL для обработки изображений с камеры iPhone в реальном времени, определяя, какие пиксели соответствуют целевому цвету в пределах заданного порога. Затем эти пиксели имеют свои нормализованные координаты X, Y, встроенные в их красные и зеленые цветовые компоненты, тогда как все остальные пиксели отмечены как черные. Затем цвет всего кадра усредняется для получения центроида цветного объекта, который вы можете отслеживать, когда он перемещается по экрану камеры.
В то время как это не касается случая отслеживания более сложного объекта, такого как нога, шейдеры, подобные этому, должны быть способны писать, чтобы выбрать такой движущийся объект.
Как обновление вышеизложенного, за два года с тех пор, как я написал это, я разработал инфраструктуру с открытым исходным кодом, которая инкапсулирует OpenGL ES 2.0 шейдерная обработка изображений и видео. Одним из последних дополнений к этому является класс GPUImageMotionDetector, который обрабатывает сцену и обнаруживает в ней любые движения. Это даст вам обратно центроид и интенсивность общего движения, которое он обнаруживает как часть простого блока обратного вызова. Использование этой структуры для этого должно быть намного проще, чем выполнять собственное решение.