Когда я загружаю 3d-массив short int из двоичного файла, я хочу извлечь из него 2d-массив и отобразить изображение из 2d-массива в виде cv :: Mat. Я получаю сообщение о нарушении прав доступа по адресу 0x0000002DABD00000. Я видел похожие темы, но ни одна из них не помогла мне решить мою проблему. У меня заканчиваются идеи, как это исправить.
ifstream input("short.bin",ios::binary);
input.read((char*)&X, sizeof(short)); //X - cols
input.read((char*)&Y, sizeof(short)); //Y - rows
input.read((char*)&Z, sizeof(short)); //Z
vector<vector<vector<short int>>>Array3D(X, vector<vector<short int>>(Y, vector<short int>(Z)));
vector<vector<short int>> Array2D(X, vector<short int>(Y));
for (int i = 0; i < Z;i++)
{
for (int j = 0; j < Y; j++)
{
for (int k = 0; k < X; k++)
input.read((char*)&Array3D[k][j][i],sizeof(Array3D[0][0][0]));
}
}
input.close();
for (int i = 0; i < X; i++)
{
for (int j = 0; j < Y; j++)
Array2D[i][j] = Array3D[i][j][0];
}
Mat image(X ,Y , CV_16U, &Array2D);
namedWindow("Obraz",WINDOW_AUTOSIZE);
imshow("Obraz", image);
waitKey(-1);