Kinect функция отслеживания лица StartTracking в C ++ не дает ожидаемого результата

Я работаю с Kinect SDK 1.5 и обнаружил некоторые проблемы, когда я хочу отслеживать несколько лиц.

В моем коде я впервые использую

myFaceTracker->DetectFaces(&sensor, NULL, candidates, &nums)

чтобы получить текущее обнаруженное лицо, и сравнить его положение с уже отслеженными лицами.

Эти не отслеженные лица будут добавлены в очередь для отслеживания на следующем шаге.

Но когда я хочу отслеживать их с помощью функции StartTracking, это не дает ожидаемого результата.

например:

//Time for us to track those not tracked
RECT rect = queue_face.front();

//Make the region larger than orginal
int length_vertical = rect.bottom - rect.top;
int length_horizontal = rect.right - rect.left;
rect.top    = rect.top - length_vertical * 2;
rect.bottom = rect.bottom + length_vertical * 2;
rect.left   = rect.left - length_horizontal * 2;
rect.right  = rect.right + length_horizontal * 2;

//Use OpenCV to see if it gets right
CvPoint LT = cvPoint(rect.left, rect.top);
CvPoint LB = cvPoint(rect.left, rect.bottom);
CvPoint RT = cvPoint(rect.right, rect.top);
CvPoint RB = cvPoint(rect.right, rect.bottom);

cvLine(_img, LT, LB, cvScalar(0, 255, 0), 2);
cvLine(_img, LB, RB, cvScalar(0, 255, 0), 2);
cvLine(_img, RB, RT, cvScalar(0, 255, 0), 2);
cvLine(_img, RT, LT, cvScalar(0, 255, 0), 2);

//Here turns out to be some problem
result = facetracker->StartTracking(&sensor, &rect, NULL, faceresult);

//Check Result
is_track = SUCCEEDED(result) && SUCCEEDED(faceresult->GetStatus());
queue_face.pop();

....

Код выше дает мне совершенно бесполезный результат, даже если статус говорит, что успешно
если мы используем

faceresult->GetFaceRect(rect);

это дает нам прямоугольник с (0, 0, 0, 0)!

Но если мы изменим

result = facetracker->StartTracking(&sensor, &rect, NULL, faceresult);

в

result = facetracker->StartTracking(&sensor, NULL, NULL, faceresult);

Теперь это даст нам что-то полезное, но таким образом практически невозможно контролировать, кого мы хотим отслеживать.

Я также пытался увидеть прямоугольник ввода в (0, 0, ширина-1, высота-1), но еще хуже, теперь он говорит, что не может ничего отслеживать.

Кто-нибудь даст мне помощь?

Большое спасибо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]