在我的应用程序中,我得到的深度帧类似于从 Depth Basics Sample 中检索到的深度帧。我不明白的是,为什么图像中有离散级别?我不知道我怎么称呼这些深度值的突然变化。很明显,我右手的一半全是黑色的,而我的左手似乎分成了 3 个这样的级别。这是什么以及如何删除它?
当我运行 KinectExplorer 示例应用程序时,我得到的深度如下。这是我想从原始深度数据生成的深度图像。
我正在使用 Microsoft 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++;
}
}