He usado Kinect y OpenCV (estoy usando C++). Puedo obtener tanto el RGB como la imagen de profundidad. Con la imagen RGB puedo "jugar" como de costumbre, difuminándolo, usando canny (después de convertirlo a escala de grises), ... pero no puedo hacer lo mismo con la imagen de profundidad. Cada vez que quiero hacer algo con la imagen de profundidad obtuve excepciones.Kinect y Opencv, la imagen de profundidad, cómo usarla
Tengo el siguiente código para obtener la imagen de profundidad:
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);
El problema es que no puedo hacer nada con kinectDepthImage. Traté de convertirlo a escala de grises y luego usar astuto, pero no sé cómo convertirlo.
Básicamente me gustaría aplicar canny y laplaciano a la imagen de profundidad.
si esta es la respuesta a la pregunta, márquelo como "aceptado" (haga clic en marque el icono). – Spudley