Question

Je peux réellement obtenir une image RVB de mon ASUS Xtion mais je ne peux pas obtenir d'image de profondeur. Je vois une image noire à la place et aucune erreur n'apparaît.

L'exemple SimpleView donné avec Openni fonctionne, donc je suppose que ce n'est pas le capteur, pas la bibliothèque et OpenCV semble fonctionner correctement.

Une idée?

Voici mon code:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char* argv[] )
{

    cout << "Device opening ..." << endl;
    VideoCapture captureStream;
    captureStream.open(CV_CAP_OPENNI_ASUS);


    if( !captureStream.isOpened() ){
        cout << "Can not open capture object." << endl;
        return -1;
    }

    for(;;){
        Mat depth;

        if( !captureStream.grab() ){
            cout << "ASUS Xtion can not grab images." << endl;
            return -1;
        }else
            if( captureStream.retrieve( depth, CV_CAP_OPENNI_DEPTH_MAP) )
                imshow("depth",depth);

        if( waitKey( 30 ) == 27 )   break;

    }

    return 0;
}

Merci!

Était-ce utile?

La solution

La Exemple de code d'OpenCV Utilise réellement ce code pour récupérer et afficher la map de profondeur:

Mat depth;
capture.retrieve( depth, CV_CAP_OPENNI_DEPTH_MAP )
const float scaleFactor = 0.05f;
Mat show; 
depth.convertTo( show, CV_8UC1, scaleFactor );
imshow( "depth map", show );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top