0

以下 C++ 代码给出了连续从 Kinect 2 获取最新帧的代码。

#include <Kinect.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <Windows.h>
#include <iostream>
using namespace std;

const int width = 512;
const int height = 424;
const int colorwidth = 1920;
const int colorheight = 1080;
IDepthFrameReader* reader;     // Kinect depth data source
IKinectSensor* sensor = nullptr;
int main(int argc, char* argv[]) {
    if (FAILED(GetDefaultKinectSensor(&sensor))) {
        return 19;
    }
    if (sensor) {
        sensor->Open();
        IDepthFrameSource* framesource = NULL;
        sensor->get_DepthFrameSource(&framesource);
        framesource->OpenReader(&reader);
        if (framesource) {
            framesource->Release();
            framesource = NULL;
        }
        IDepthFrame* frame = NULL;
        if (SUCCEEDED(reader->AcquireLatestFrame(&frame))) {
            cout << "not bad";
            getchar();
            return 100;
        }
        else{
            cout << "not found";
            getchar();
            return 23;
        }
    }
    else {
        return -1;
    }
}

事实上,无论我是否将 Kinect 连接到我的笔记本电脑,输出都没有变化,它是:“未找到”。当我连接 Kinect 并运行程序时,Kinect 的灯会亮起。在一些现成的代码中,Kinect 可以正常工作。问题出在哪里?

4

1 回答 1

0

您应该检查返回的错误代码AcquireLatestFrame,也许它可以告诉您问题所在。

这里有一个提示:也许,当你调用 时AcquireLatestFrame,框架还不可用。所以把这个调用放到一个循环中,迟早框架会可用。

于 2017-07-08T11:23:48.267 回答