I am trying to read the mnist file and put the elements in a vector of matrix. code to read mnist
for(int r = 0; r < n_rows; ++r)
{
for(int c = 0; c < n_cols; ++c)
{
unsigned char temp = 0;
file.read((char*)&temp, sizeof(temp));
data[r][c] = temp;
//std::cout << "r: " << r << " c: " << c << " temp: "<< sizeof(temp) << "\n";
}
} //this print my array the correct way
for(int k = 0; k < 28; k++)
{
for(int z = 0; z < 28; z++)
{
std::cout << data[k][z] << " ";
if(z == 27)
std::cout << "\n";
}
}
cv::Mat img(28,28,CV_8U,&data);
mnist.push_back(img);
std::cout<<"data: "<< sizeof(data) << " img: "<< sizeof(img) << " mnist: " << sizeof(mnist) <<"\n";
the output of the last line above is :
data(array): 784 img(cv::Mat): 96 mnist(vector of matrix): 24
should they not be at least the same the same size ? this why i think when i print my matrix is not showing the right output (the same as the array) i guess the vector is referencing to the matrix and the matrix is referencing to the array but then something get changed in the memory somewhere and thats why the output is not what i expect ?
[edit]
the code above is in a function returning the vector of matrix.
When i use the code inside the main function the output is ok!
can someonw explain ?
I would prefer to have that in a seperate function instead of having a giant main... but ill keep working with whats working for now.