Kinect V2 读取深度问题
Kinect V2 read Depth issue
给出了以下 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 连接到我的笔记本电脑,输出都没有变化,它是:"not found"。当我连接 Kinect 和 运行 程序时,Kinect 的灯亮了。在一些现成的代码中,Kinect 可以正常工作。问题出在哪里?
你应该看看AcquireLatestFrame
返回的错误代码,也许它能告诉你问题是什么。
这里有一个提示:也许,当您调用 AcquireLatestFrame
时,框架还不可用。所以把这个调用放到一个循环中,迟早框架会可用。
给出了以下 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 连接到我的笔记本电脑,输出都没有变化,它是:"not found"。当我连接 Kinect 和 运行 程序时,Kinect 的灯亮了。在一些现成的代码中,Kinect 可以正常工作。问题出在哪里?
你应该看看AcquireLatestFrame
返回的错误代码,也许它能告诉你问题是什么。
这里有一个提示:也许,当您调用 AcquireLatestFrame
时,框架还不可用。所以把这个调用放到一个循环中,迟早框架会可用。