К сожалению в средствах SDK для KINECT-360 нет функции распознавания лица человека (в новой версии KINECT ONE это должно быть уже реализовано), есть только возможность детектирования лиц, т.е. сенсор может определить что перед ним находится лицо человека, а сказать кто это именно нельзя. Но распознать можно используя другие способы, например openCV. В своем проекте мы успешно эту функцию реализовали так: когда сенсор детектирует что перед ним человек он передает управление в openCV, а та, в свою очередь, узнает человека если его лицо хранится в базе, ну, а для openCV нет разницы на каком расстоянии находится лицо (хотя на сегодня распознает очень плохо).
robot-home2000 писал(а):что то тема давно не обновлялась
Я основы изложил, и пользуясь написанным любой может начать, а там, если вопросы какие или непонятки, то спрашивайте. О чем еще писать я не знаю, это вроде все.
Правду сказать, обещал еще в Linux подключение рассказать, но сам еще не разобрался, к сожалению. Как будет готово опишу. А может кто и подключал, да распишет здесь, с сообществом поделится?!
Как всегда круто! Вот интересно, возможно ли подключить киннект напрямую к платке с АРМ процессором, минуя всякую винду. С целью получения, например, только скелета?
Scorpio писал(а):Есть описание USB протокола. Но я там ни слова не нашел про скелеты.
Стандартный SDK для Kinect с отслеживанием скелетов работает только под Windiws, ясное дело, что SDK под другие платформы Microsoft не будет выпускать. В этом случае можно воспользоваться другими библиотеками. К примеру, есть бесплатная кросс-платформенная библиотека компьютерного зрения OpenNI, она умеет отслеживать скелет в облаке точек возвращаемом Kinect. Но тут, возможно, могут возникнуть трудности с быстродействием. Ведь сенсор возвращает точки суставов скелета человека как готовый поток, OpenNI то же возвращает суставы, но он ищет скелеты а облаке точек глубины сцены передаваемой сенсором и тратит на это драгоценные ресурсы процессора.
а можно ли на кинекте реализовать автономность робота, чтоб он обходил динамические препятствия, избегая столкновений. находил на полу предметы размером примерно со спичечный коробок и мог собирать их манипулятором(подъехал к предмету так чтобы тот оказался четко в определенном месте кадра и после этого выполнил команду) или для этих целей можно использовать что то другое?
Собственно решение вашей задачи, это получение 3D карты. Ну и конечно, KINECT идеально подходит для этого, почитайте наши посты про робота LUM (forum10/topic13841.html), он именно так, как вы описали работает: обходит стационарные и передвигающиеся объекты, видит на полу предметы высотой больше 1,5 см., видит и реагирует на человека. Правда, все это решается с помощью трех сенсоров KINECT. Так же для решения этих задач можно использовать стереозрение. В обоих случаях, как при использовании KINECT так и при использовании стереозрения, без обработки видео потока не обойтись. Так же стереозрение более затратно с точки зрения вычислительных ресурсов. Пожалуй, больше датчиков возвращающих трехмерную картинку нет. Если взять инфракрасные или ультразвуковые датчики, то они измеряют расстояние до единственной точки спереди. Лидар возвращает карту помещения как срез по одной плоскости. Конечно, для получения трехмерной карты лидар можно качать в горизонтальной или вертикальной плоскости, но это вводит в проект дополнительную механику, при этом необходимо всегда знать на какой угол наклонен лидар. Ну и точность у лидара ниже чем у KINECT.
я слышал есть аналоги кинекта, более качественные по видео картинке, которые могут не только обнаружить человека но и распознавать лица, чего неможет кинект... но правда незнаю что это за такие устройства...
lori писал(а):...распознать можно используя другие способы, например openCV. В своем проекте мы успешно эту функцию реализовали так: когда сенсор детектирует что перед ним человек он передает управление в openCV, а та, в свою очередь, узнает человека если его лицо хранится в базе, ну, а для openCV нет разницы на каком расстоянии находится лицо (хотя на сегодня распознает очень плохо).
Вы не могли бы подсказать, где можно найти готовые решения для распознавания лиц? В документации OpenCV я совсем не могу разобраться.
И ещё есть такой вопрос: можно ли в OpenCV реализовать распознавание людей по одежде?
Что вы вкладываете в понятие "распознавание лица человека"? Если только детектирование лица, то решение есть в самой OpenCV, буквально пара-тройка программных строк вызывающих данную функцию, а если речь идет об узнавании человека, то здесь все намного сложнее.