-1

画像からいくつかの情報を読み取る必要があります。.tif 画像を Visual C++ 2006 にドラッグすると、次のように表示されます: ここに画像の説明を入力 時間画像 (黄色で強調表示) の右側に指定されている最小値と最大値を読み込もうとしています。これどうやってするの?ファイルから読み取るときは、通常、次のようにします。

ifstream fileStream(file_name); 
string contents;
while(fileStream >> contents) //do something
fileStream.close();

ただし、指定された画像でこのアプローチを試し、情報が読み込まれるとすぐにコンテンツをカウントしようとすると、次のように出力されます。

contains = MM 
contains =
contains =

明らかに、それは機能していません。情報を 1 回だけ読み込み、3 回繰り返した後に読み込みを停止します。

では、画像から最大値と最小値を取得するにはどうすればよいでしょうか?

ありがとう!

4

2 に答える 2

1

サンプル コードはテキスト ファイルの読み取りに適していますが、TIFF ファイルは (ほとんどの場合) バイナリです。したがって、最初に行う必要があるのは、ファイルをバイナリ モードで開くことです。

std::ifstream fileStream(file_name, std::ios::binary);

スタイルのエクストラクタは、書式設定されたテキストには適していますが、バイナリ ファイルには<<あま​​り適していません。

ファイル内のどこに目的の値があるかを把握するには、ファイル形式について知っておく必要があります。TIFF の詳細はわかりませんので、参考文献を探す必要があります。おそらく、ヘッダー (例: fileStream.read(buffer, size)) の読み取り、ヘッダーのオフセットの検索、ファイル内のその場所への移動 (例: filestream.seekg(offset, ios::beg))、およびその場所でのバイトの解釈が必要になります。

これは、C++ ファイル処理に関する適切なチュートリアルですBinary Filesというセクションを必ず読んでください。

于 2013-03-22T23:59:26.733 に答える