无法在Windows中初始化Kinect(检测到0个传感器)
Cannot Initialize Kinect in Windows (0 sensors detected)
i不能在我的Windows PC中构成Kinect V1。
这是我的代码(成功构建):
#include <Windows.h>
#include <Ole2.h>
#include <gl/GL.h>
#include <gl/GLU.h>
#include <gl/glut.h>
#include <NuiApi.h>
#include <NuiImageCamera.h>
#include <NuiSensor.h>
#define width 640
#define height 480
// Kinect variables
HANDLE rgbStream; // The identifier of the Kinect's RGB Camera
INuiSensor* sensor; // The kinect sensor
int main(int argc, char* argv[]) {
// Get a working kinect sensor
int numSensors=1;
HRESULT reponse;
reponse = NuiGetSensorCount(&numSensors);
if (reponse < 0) return false;
if (numSensors < 1) return false;
if (NuiCreateSensorByIndex(0, &sensor) < 0) return false;
// Initialize sensor
sensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH | NUI_INITIALIZE_FLAG_USES_COLOR);
sensor->NuiImageStreamOpen(
NUI_IMAGE_TYPE_COLOR, // Depth camera or rgb camera?
NUI_IMAGE_RESOLUTION_640x480, // Image resolution
0, // Image stream flags, e.g. near mode
2, // Number of frames to buffer
NULL, // Event handle
&rgbStream);
return sensor;
}
问题是函数" nuigetsensorcount"始终返回传感器数为0。
通过USB端口将Kinect 1插入PC(我已经在不同的端口中尝试过);奇怪的是,如果我运行Skanect(1.8 Win64)之类的软件,Skanect识别设备(被检测为OpenNi 2传感器),并且可以使用它。
我正在使用Visual Studio 2013 Update 5,在Windows 7 64位中。我已经安装了OpenNi 64位2个驱动程序,Windows SDK v1.8。
在我的项目属性中,我正在拨打位于:
的kinect10.lib库- C: Program Files Microsoft SDKS Kinect V1.8 Lib X86
- C: Program Files Microsoft SDKS Kinect v1.8 lib amd64
(我在x86和x64配置中都尝试过)
同样,对于每个配置,都尝试使用Kinect10.dll二进制
- c: Windows System32
- C: Windows Syswow64
任何评论/建议都受到了极大的欢迎。另外,如果我错过了一些您认为相关的信息,请告诉我。
预先感谢。
edit 我刚刚看到您已经调用了初始化功能。也许您需要在nuigetsensorcount(&amp; numsensors)函数之前调用该功能。
我在NUI框架上没有太多经验,但是我建议使用Kinect摄像头的OpenNI框架。尽管Alreay停止了它的稳定,并且效果很好。它甚至支持抓取图像等回调函数。
这是链接:http://structure.io/openni
但是,从我在互联网上发现的内容,您似乎正在关注本教程:http://www.cs.princeton.edu/~edwardz/tutorials/kinect/kinect1.html
我在这里找到了另一个
在阅读传感器数量之前,它似乎调用初始化功能:
[...]
int main()
{
cout << "Hello world" << endl;
NuiInitialize(NUI_INITIALIZE_FLAG_USES_SKELETON); <-------- HERE
NUI_SKELETON_FRAME ourframe;
while (1)
{
NuiSkeletonGetNextFrame(0, &ourframe);
for (int i = 0; i < 6; i++)
{
if (ourframe.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED)
cout << "Right Hand: " ;
cout << ourframe.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT].y << endl;
}
system("cls");
}
NuiShutdown();
return 0;
}
其中nuiinitialize指向MSDN DOC
说
指定Kinect子系统以初始化
这似乎使Kinect子系统能够启动设备是必要的。
让我知道是否有效!
- 如何检测两个文件条目是否引用与Qt相同的物理文件系统?
- 2 个 QGraphicsPixmapItems 之间的 QT 冲突检测
- 如何使用 dlib 训练或合并多个 .svm 并检测多个类
- 如何在 Lua 回调中检测可选的第一个参数
- 如何使用灵活的碰撞库在两个点云或点云与机器人末端执行器模型之间进行碰撞检测
- OpenCV 检测多个旋转的缩放对象
- 如何有效地检测4个整数变量中的对称性
- C++ 比较 2 个不同列表中的值以使用 2 for 循环摆脱重复的数字。无法正确检测重复项
- 无法在Windows中初始化Kinect(检测到0个传感器)
- CMAKE 无法检测到提升多个安装
- 如何检测两个3D点云之间的差异
- 在不断变化的光线条件下检测多个移动物体
- C++中用于碰撞检测的多个调度
- 人脸检测期间的多个边界框
- 使用多个按键时,AABB碰撞检测出现故障
- 如何检测两个连续的视频帧是否相同
- 检测重复的单词 C++,不检测第一个单词
- 如何在OpenCv中轻松检测两个roi是否相交?
- 使用' void_t '检测多个继承类型重复错误
- 暴力碰撞检测两个对象太慢