int reverseInt(int i) { unsigned char c1, c2, c3, c4; c1 = i & 255; c2 = (i >> 8) & 255; c3 = (i >> 16) & 255; c4 = (i >> 24) & 255; return ((int)c1 << 24) + ((int)c2 << 16) + ((int)c3 << 8) + c4; } void create_image(CvSize size,int channels, unsigned char* data, int imagenumber) { string imgname; ostringstream imgstrm;string fullpath; imgstrm << imagenumber; imgname=imgstrm.str(); fullpath="D:\\"+imgname+".jpg"; IplImage *imghead=cvCreateImageHeader(size, IPL_DEPTH_16S, channels); imghead->imageData=(char *)data; cvSaveImage(fullpath.c_str(),imghead); } int main() { ifstream file ("D:\\train-images.idx3-ubyte",ios::binary); if (file.is_open()) { int magic_number=0; int number_of_images=0;int r; int c; int n_rows=0; int n_cols=0;CvSize size;unsigned char temp=0; file.read((char*)&magic_number,sizeof(magic_number)); magic_number= reverseInt(magic_number); file.read((char*)&number_of_images,sizeof(number_of_images)); number_of_images= reverseInt(number_of_images); file.read((char*)&n_rows,sizeof(n_rows)); n_rows= reverseInt(n_rows); file.read((char*)&n_cols,sizeof(n_cols)); n_cols= reverseInt(n_cols); for(int i=0;i<number_of_images;++i) { for(r=0;r<n_rows;++r) { for(c=0;c<n_cols;++c) { file.read((char*)&temp,sizeof(temp)); } } size.height=r;size.width=c; create_image(size,3, &temp, i); } } return 0; }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)