我使用的是 Kinect 和 OpenCV(我使用的是 c++)。我可以获得 RGB 和深度图像。使用 RGB 图像,我可以像往常一样“播放”它,模糊它,使用 canny(将其转换为灰度之后),......但我不能对深度图像做同样的事情。每次我想对深度图像做一些事情时,我都会遇到异常。
我有以下代码来获取深度图像:
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);
问题是我对 kinectDepthImage 无能为力。我尝试将其转换为灰度,然后使用 canny,但我不知道如何转换它。
基本上我想将精明和拉普拉斯应用于深度图像。