要读取帧的深度数据,必须跳过深度文件的前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/

10-12 21:32