Dr *_*ban 9 c++ opencv visual-c++ kinect
我使用的是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);
Run Code Online (Sandbox Code Playgroud)
问题是我无法对kinectDepthImage做任何事情.我试图将它转换为灰度,然后使用canny,但我不知道如何转换它.
基本上我想将canny和laplacian应用于深度图像.
问题是cvGetImage的输出是16位深度,而canny需要8位,因此我需要将其转换为8位,类似于:
cvConvertScale(depthMetersMat, kinectDepthImage8, 1.0/256.0, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11886 次 |
| 最近记录: |