Kinect и Opencv, изображение глубины, как его использовать

Я использую Kinect и OpenCV (я использую c ++). Я могу получить как изображение RGB, так и изображение глубины. With the RGB image I can "play" as usual, blurring it, using canny (after converting it to greyscale),... but I can't do the same with the depth image. Each time I want to do something with the depth image I got exceptions.

I have the following code to get the depth image:

CvMat* depthMetersMat = cvCreateMat(480, 640, CV_16UC1 ); 
CvMat* imageMetersMat = cvCreateMat(480, 640, CV_16UC1 );
IplImage *kinectDepthImage = cvCreateImage( cvSize(640,480),16,1); 

const XnDepthPixel* pDepthMap = depth.GetDepthMap();

for (int y=0; y<XN_VGA_Y_RES; y++){ 
            for(int x=0;x<XN_VGA_X_RES;x++){ 
                depthMetersMat->data.s[y * XN_VGA_X_RES + x ] = 10 * pDepthMap[y * XN_VGA_X_RES + x]; 
          }
}

cvGetImage(depthMetersMat, kinectDepthImage);

The problem is that I can't do anything with kinectDepthImage. I tried to convert it to greyscale and then using canny, but I dont know how to convert it.

Basically I would like to apply canny and laplacian to the depth image.

9
задан Dr Sokoban 1 April 2011 в 11:50
поделиться