Я работаю с 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), но еще хуже, теперь он говорит, что не может ничего отслеживать.
Кто-нибудь даст мне помощь?
Большое спасибо.
Задача ещё не решена.
Других решений пока нет …