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);
}