2つの別々のファイルにある2つのテーブルからルックアップテーブルを作成するプログラムを書いています。最初の表を読むと、すべてが正しく読み取られています。ただし、2番目のファイルを読んでいると、fopen
ファイル全体が開かないようです。
これは、コンパイラが_iobuf
ファイル構造を実装し、最初に初期化されたとき_cnt
()よりもはるかに低く初期化されているように見え( )、ファイルから読み取ると減少するためです。_cnt = 530
_cnt ~ 4096
これが私のコードの抜粋です:
int vertical,horizontal,channels,count;
FILE *fp;
fp = fopen(filename,"r");
if(fp==NULL){
cout << "File not found" << endl;
return Mat();
}else{
cout << "Opening and Reading " << filename << endl;
}
//Read header
fread(&count,4,1,fp);
cout << "ReadHistogram(): Count number is " << count;
if(count!= 5){
cout << "Header file reads: " << count << endl;
return Mat();
}
//Read size
fread(&vertical,4,1,fp);
//cout << "ReadHistogram(): Vertical size:" << vertical <<endl;
fread(&horizontal,4,1,fp);
//cout << "ReadHistogram(): Horizontal size:" << horizontal <<endl;
fread(&channels,4,1,fp);
//cout << "ReadHistogram(): Channel size:" << channels<<endl;
//Create Mat array
int size[] = {vertical, horizontal, channels};
Mat histogram(3,size,CV_64F,Scalar::all(0));
//Read in array
count = 0;
for(int i=0;i<vertical;i++){
for(int j=0;j<horizontal;j++){
for(int k=0;k<channels;k++){
double temp5;
fread(&temp5,8,1,fp);
histogram.at<double>(i,j,k) = temp5;
if(count <= 300){
cout << "Array(" << i+1 << "," << j+1 << "," << k+1 << ")" << "=" << histogram.at<double>(i,j,k) << endl;
cout << "Temp5 is " << temp5 << endl;
}
count++;
}
}
}
cout << "Done reading " << filename << endl;
fclose(fp);
return histogram;
_cnt
PS:私は構造の中に正確に何があるかを調べようとしてきましたがFILE
、そのようなものは何も見つかりません。どなたでもご意見をいただければ幸いです。