无法在Windows中初始化Kinect(检测到0个传感器)

Cannot Initialize Kinect in Windows (0 sensors detected)

本文关键字:检测 0个 传感器 Kinect Windows 初始化      更新时间:2023-10-16

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子系统能够启动设备是必要的。

让我知道是否有效!