Обнаружить несколько тел в Kinect?
Я работаю с kinect в openframework с использованием аддона ofxKinect, что здорово и очень весело!
Во всяком случае, я ищу некоторые указатели или направление при работе с несколькими телами на экране. Я думал о том, чтобы сделать прямоугольник вокруг каждого обнаруженного тела, и когда эти пересечения пересекаются, что-то может произойти, эффект или что-то еще.
Так что я ищу идеи или что-то, что могло бы указать мне правильное направление обнаружения нескольких тел при использовании kinect.
Прямо сейчас, основываясь на изображении глубины, которое я получаю от kinect, я прохожу каждый пиксель и создаю группу меньших прямоугольников с отступом и группирую их в более крупный прямоугольник, если они отделены от другой группы прямоугольников. Это не идеально, так как имеет дело только со значениями пикселей и не отделяет тела друг от друга и не дает мне результатов, которые я ищу.
Так что любые идеи будут с благодарностью!
1 ответ
Если вы хотите использовать xKinect, быстрое решение было бы установить порог по глубине и принять тела, и никакие другие объекты не будут находиться в пределах диапазона глубины. Это должно облегчить использование искателя контуров OpenCV для выделения контуров тел и получения ограничивающих прямоугольников. Если прямоугольники пересекаются (а ofRectangle уже выполняет математику для вас), запустите нужную вам реакцию. Также не забудьте сделать это один раз, если эффект уже не отображается, в противном случае вы будете вызывать эффект несколько раз в секунду, пока ограничивающие прямоугольники двух тел пересекаются.
Вы можете попробовать что-то более жесткое и использовать ofxCv (не только ofxOpenCV), чтобы использовать функциональность HoG. Это само по себе медленно и не идеально для карты глубины, но, надеюсь, вы можете запускать каждые несколько секунд, просто чтобы обнаружить человека и глубину, а затем отслеживать это движение.
Лично, если вы хотите отслеживать людей с помощью Kinect, я рекомендую использовать ofxOpenNI, как будто он уже предоставляет функцию сегментации сцены, и даже если вы не отслеживаете скелеты, вы все равно можете получить полезную информацию, такую как пиксели, относящиеся к каждому телу, и они центр масс. Я предполагаю, что Microsoft KinectSDK имеет аналогичную функцию, и там должен быть дополнительный модуль, но это только окна.
ofxKinect / libfreenect не предлагает никаких функций обнаружения людей, так что вам нужно будет свернуть свои собственные.