在我的应用程序中,我获取到了类似于深度基础示例中检索到的深度帧。但是我不明白为什么图像中会有离散的级别?我不知道如何称呼这些深度值的突然变化。显然我的右手一半是全黑的,而我的左手似乎分成了3个这样的级别。这是什么,我该如何去除它?
当我运行KinectExplorer示例应用程序时,我会得到以下深度图像。这是我想从原始深度数据生成的深度图像。
我正在使用微软Kinect SDK(v1.6)的NuiApi和OpenCV。我有以下代码:
BYTE *pBuffer = (BYTE*)depthLockedRect.pBits; //pointer to data having 8-bit jump
USHORT *depthBuffer = (USHORT*) pBuffer; //pointer to data having 16-bit jump
int cn = 4;
this->depthFinal = cv::Mat::zeros(depthHeight,depthWidth,CV_8UC4); //8bit 4 channel
for(int i=0;i<this->depthFinal.rows;i++){
for(int j=0;j<this->depthFinal.cols;j++){
USHORT realdepth = ((*depthBuffer)&0x0fff); //Taking 12LSBs for depth
BYTE intensity = (BYTE)((255*realdepth)/0x0fff); //Scaling to 255 scale grayscale
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 0] = intensity;
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 1] = intensity;
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 2] = intensity;
depthBuffer++;
}
}