2016-06-20 10 views
0

Ich kann Kinect v1 nicht in meinem Windows PC initialisieren.Kann Kinect in Windows nicht initialisieren (0 Sensoren gefunden)

Dies ist mein Code (es erfolgreich erstellt):

Das Problem

#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; 
} 
ist, dass die Funktion „NuiGetSensorCount“ liefert immer, dass die Anzahl der Sensoren 0

Die Kinect ist 1 eingesteckt ist über den USB-Anschluss zum PC (Ich habe es in verschiedenen Ports versucht); und das Merkwürdige ist, dass, wenn ich Software wie Skanect (1.8 Win64) benutze, Skanect das Gerät erkennt (es wird als OpenNI 2 Sensor erkannt) und ich kann es benutzen.

Ich verwende Visual Studio 2013 Update 5 in Windows 7 64-Bit. Ich habe OpenNI 64-Bit 2-Treiber und Kinect für Windows SDK v1.8 installiert.

In meinem Projekt Eigenschaften, ich rufe die Kinect10.lib Bibliothek finden Sie unter:

  • C: \ Programme \ Microsoft SDKs \ Kinect \ v1.8 \ lib \ x86
  • C: \ Programme \ Microsoft SDKs \ Kinect \ v1.8 \ lib \ amd64

(ich habe versucht, in den beiden x86 und x64-Konfigurationen)

Ebenso für jede configurationI've versucht, mit dem Kinect10.dll Binärdateien suchen d an:

  • C: \ Windows \ System32
  • C: \ Windows \ SysWOW64

Alle Kommentare/Anregungen sehr zu begrüßen sind. Wenn ich Informationen verpasst habe, die Sie für relevant halten, lassen Sie es mich bitte wissen.

Vielen Dank im Voraus.

Antwort

0

BEARBEITEN Ich habe gerade gesehen, dass Sie bereits die Initializer-Funktion aufrufen. Vielleicht müssen Sie das vor Ihrer Funktion NuiGetSensorCount (& numSensors) aufrufen.

Ich habe nicht viel Erfahrung mit dem NUI-Framework, aber ich würde empfehlen, das OpenNI-Framework für die Kinect-Kamera zu verwenden. Obwohl schon eingestellt, ist es ziemlich stabil und funktioniert sehr gut. Es unterstützt sogar Callback-Funktionen für gegriffene Bilder und so weiter.

Heres der Link: http://structure.io/openni

Aber von dem, was ich im Internet gefunden habe, scheint es, dass Sie dieses Tutorial sind folgende: http://www.cs.princeton.edu/~edwardz/tutorials/kinect/kinect1.html

Ich habe eine andere fand man here

Es scheint eine Initialisierer-Funktion aufzurufen, bevor die Anzahl der Sensoren gelesen wird:

[...] 
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; 
} 

Wo NuiInitialize Punkte the msdn doc

die

sagt Gibt die Kinect-Subsysteme

Dies scheint zu initialisieren die Kinect-Subsystem zu ermöglichen, die ocurse notwendig von wäre, das Gerät zu starten .

Lassen Sie mich wissen, ob das geklappt hat!

+0

Danke für den Rat. Ich habe versucht, _NuiInitialize_ ganz am Anfang aufzurufen; aber es hat nicht geholfen. Ich denke, es muss für einen bestimmten Sensor aufgerufen werden, und deshalb wird es im Tutorial verwendet, nachdem der Sensor erstellt wurde. Wie für die Verwendung des OpenNI-Framework stattdessen arbeite ich daran; aber es scheint, dass es einige Zeit dauern wird, um zu überprüfen. – RSAPA

+0

Ich weiß nicht, wie das möglich ist, wenn die andere Anwendung das Gerät erkennt ... aber versuchen Sie das Kinect auf einem powered USB-Hub einstecken. – Hafnernuss