要读取帧的深度数据,必须跳过深度文件的前28个字节,其余部分是320 * 240无符号短裤的数组,即320 * 240 * 2字节(因为每个深度帧的像素为320 x 240像素) )。我已包含用于读取深度文件的代码,但是当我尝试运行该文件时,该文件始终挂起。请让我知道如何更正代码。
int main()
{
int array_size = 76800*2;
char *data[array_size];
unsigned short depth[320][240];
int i,j;
// open the depth file in read mode.
ifstream infile("000000.depth");
// check for error in opening file
if(!infile.is_open())
{
std::cout<< "File could not be opened";
return 1;
}
std::cout << "Reading from the file" << endl;
infile.seekg(29,ios::beg); // discarding first 28 bytes
while(!infile.eof())
{
infile >> data[array_size];
}
// storing data in required array
for (i=0; i = 320; i++)
{
for (j=0; j=240; j++)
{
depth[i][j] = (unsigned short)atof(data[i*j]);
std::cout << depth[i][j] << endl;
}
}
infile.close();
getch();
return(0);
}
最佳答案
嗯,您似乎在for
循环方面遇到问题。看着:
for (i=0; i = 320; i++)
这意味着“只要
i
为真,就以i = 320
从0开始运行循环”。事实是i = 320
作为值评估为320
,这始终是正确的。您想要i < 320
。关于c++ - 在C++中读取kinect深度文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28570540/