多维转一维的方法

来源:互联网 发布:mac snow ball peach 编辑:程序博客网 时间:2024/05/21 01:28
//生成彩图的值        char imgpath[256];        int* cube = new int[500 * 500 * 500 * 3];        for (int s = 0; s < 500; s++)        {            sprintf_s(imgpath, "D:\\cubeimg\\%d.png", s + 2150);            Mat img = imread(imgpath);            if (!img.data)            {                cout << "载入失败" << endl;            }            Mat img_resize;            resize(img, img_resize, Size(1000, 500), 0, 0, CV_INTER_LINEAR);            Mat submat(500, 500, CV_8UC3);            img_resize.colRange(499, 999).copyTo(submat);            for (int i = 0; i < 500; i++)            {                for (int j = 0; j < 500; j++)                {                    {                        int t = submat.at<Vec3b>(i, j)[ch];                    //四维转换为一维的方法,三维的可以                    //int index = 500 * 500 s + 500 * i + j;                    //一维转三维可以用除运算,和模运算的方法                        int index = 500 * 500 * 3 * s + 500 * 3 * i + 3 * j + ch;                        cube[index] = t;                    }                }            }        }        FILE *fp;        if ((fp = fopen("d:\\image.pixel", "wb")) == 0)        {            printf("open failed!");            exit(1);        }        fwrite(cube, sizeof(int), 500 * 500 * 500 * 3, fp);        fclose(fp);
0 0