Kinect SDk2.0 OpenMultiSoureFrameReader

Kinect SDK2.0 предоставил MultiSouceFrameReader, который может считывать много потоковых данных одновременно, таких как: Цвет, Глубина, Тело, Предполагаемый. Насколько я знаю, считыватель multisouceFrame каким-то образом объединяет весь поток, и мы можем получить самые медленные кадры в секунду (например, Color 15fps, глубина, вывод: 30fps -> Multisouces =15fps). Однако, когда я отлаживаю, я вижу, что если MultiSoucesFrame успешен, Цвет и Глубина - успех, но не Тело. Может кто-нибудь объяснить мне, почему это произошло?

2) Если первый шаг, если мультидисковый считыватель успешен, все определенные типы внутри успешны. Таким образом, нам не нужно перепроверять правильно? Но я вижу много уроков по Kinect v.2, их все нужно перепроверить? Я думаю, что неправильно понимаю какую-то часть, я очень ценю вашу помощь!

// Open multi Souces    
pKinectSensor->OpenMultiSourceFrameReader(FrameSourceTypes::FrameSourceTypes_Color | 
            FrameSourceTypes::FrameSourceTypes_Depth | 
            FrameSourceTypes::FrameSourceTypes_Body |
            FrameSourceTypes::FrameSourceTypes_BodyIndex, 
            &pMultiSourceFrameReader);
// Check multisouces success
 HRESULT hr = pMultiSourceFrameReader->AcquireLatestFrame(&pMultiFrame);

if (!SUCCEEDED(hr))
{
    return false;
}
// if go to here, it is mean that the multisources succesful
GetDepthFrame(pMultiFrame);
GetColorFrame(pMultiFrame);
GetBodyFrame(pMultiFrame);// However, The problem in here, Getbody not sucessful 
GetBodyIndexFrame(pMultiFrame);

// Я захожу внутрь GetBodyFrame. Проблема здесь, Тело не успешно

void KinectCapture::GetBodyFrame(IMultiSourceFrame* pMultiFrame)
{//some code
pMultiFrame->get_BodyFrameReference(&pBodyFrameReference);
HRESULT hr = pBodyFrameReference->AcquireFrame(&pBodyFrame);

// test 
if (!SUCCEEDED(hr))
{
    int test = 1;// Somehow, it go into here, the Getbody cannot succes!!!!!
}
if (SUCCEEDED(hr))
{
    //some code....

}
    }

// Я вхожу в цвет. Глубина похожа

void KinectCapture::GetColorFrame(IMultiSourceFrame* pMultiFrame)
{
IColorFrameReference* pColorFrameReference = NULL;
IColorFrame* pColorFrame = NULL;
pMultiFrame->get_ColorFrameReference(&pColorFrameReference);
HRESULT hr = pColorFrameReference->AcquireFrame(&pColorFrame);
// test CHien
if (!SUCCEEDED(hr))
{
    int test = 1;// never happened (Correct!)
}
if (SUCCEEDED(hr))
{

}

SafeRelease(pColorFrame);
SafeRelease(pColorFrameReference);
}

0 ответов

Другие вопросы по тегам