Bonjour à tous,

Je travaille actuellement sur une application de tracking, j'utilise la kinnect comme capteur (via la biblio OpenNi) et j'aimerai faire le processing en utilisant OpenCv (extraction de features et apprentissage).

Seulement mon soucis, c'est que Je ne parviens pas à copier le buffer d'openNi sur une image classique OpenCV(IplImage)...

Voila le code que j'utilise pour récupérer et convertir (ça ne marche pas)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
 
hile(true)             // Crux of this project
{
    if(device.getSensorInfo(SENSOR_IR) != NULL)
    {
        rc = ir.readFrame(&irf);        // Read one IR VideoFrame at a time
        if(irf.isValid())               // If the IR VideoFrame is valid
        {
            vmode = ir.getVideoMode();  // Get the IR VideoMode Info for this video stream.
                                        // This includes its resolution, fps and stream format.
            const uint16_t* imgBuf = (const uint16_t*)irf.getData();
                                        // PrimeSense gives the IR stream as 16-bit data output
            h=irf.getHeight();
            w=irf.getWidth();
            frame.create(h, w, CV_16U); // Create the OpenCV Mat Matrix Class Object
                                        // to receive the IR VideoFrames
            memcpy(frame.data, imgBuf, h*w*sizeof(uint16_t));
                                        // Copy the ir data from memory imgbuf -> frame.data
                                        // using memcpy (a string.h) function
            frame.convertTo(frame, CV_8U);
                                        // OpenCV displays 8-bit data (I'm not sure why?)
                                        // So, convert from 16-bit to 8-bit
            namedWindow("ir", 1);       // Create a named window
            imshow("ir", frame);        // Show the IR VideoFrame in this window
			if(waitKey(33)==27)break;          // Escape key number
        }
    }
}
ça bloque au niveau de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
memcpy(frame.data, imgBuf, h*w*sizeof(uint16_t));
J'arrive pas à débugguer :/.

Quelqu'un aurait-il fait cela auparavant ?

Je vous remercie.