2017-07-08 4 views
0

Le code suivant C++ est donné qui va chercher en permanence le dernier cadre d'un Kinect 2.Kinect V2 problème de lecture de profondeur

#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; 
    } 
} 

En fait, si je me connecte Kinect à mon ordinateur portable ou non, la sortie est pas de changement et c'est: "pas trouvé". Lorsque je connecte Kinect et exécute le programme, les lumières de Kinect s'allument. Dans certains codes prêts, Kinect fonctionne correctement. Où est le problème?

Répondre

0

Vous devriez vérifier le code d'erreur retourné pour AcquireLatestFrame, peut-être qu'il peut vous dire quel est le problème.

Voici un conseil: peut-être, lorsque vous appelez AcquireLatestFrame, le cadre n'est pas encore disponible. Mettez donc cet appel dans une boucle, tôt ou tard le cadre sera disponible.

+0

merci. Savez-vous comment je peux copier ce cadre dans CV :: Mat? – ma98

+0

Désolé, je ne connais pas OpenCV. Essayez de le demander, peut-être que quelqu'un peut vous aider. – geza