opencv cvSaveImage 関数を使用して画像を保存しようとしています。問題は、画像に対して DCT を実行し、DCT の実行後に取得された係数を変更した後、逆 DCT を実行してピクセル値を取得していることです。しかし今回はピクセル値を 10 進数で取得します (例: 254.34576)。したがって、cvSaveImage関数を使用してこれを保存すると、小数点以下のすべての値が破棄され(たとえば、254.34576を254として保存)、画像が保存されます。このため、私の結果は影響を受けます。助けてください
1019 次
1 に答える
0
「関数 cvSaveImage は、指定されたファイルに画像を保存します。画像形式は、ファイル名の拡張子に応じて選択されます。cvLoadImage を参照してください。8 ビットのシングル チャネルまたは 3 チャネル ('BGR' チャネル順) の画像のみを使用して保存できます。この関数. 形式、深さ、またはチャネルの順序が異なる場合は、保存する前に cvCvtScale および cvCvtColor を使用して変換するか、ユニバーサル cvSave を使用して画像を XML または YAML 形式に保存します。"
cvSave 関数を調査することをお勧めします。
ただし、はるかに簡単な方法は、独自の保存/読み込み関数を作成することです。これは非常に簡単です。
f = fopen("image.dat","wb");
fprintf(f,"%d%d",width,height);
for (y=0 to height)
for (x=0 to width)
fprintf(f,"%f",pixelAt(x,y));
そして、読み取り用の対応するミラー機能。
PS早朝、fprintfがバイナリファイルで動作するかどうかは一生思い出せません。しかし、あなたはその考えを理解します。代わりに fwrite() を使用できます。
于 2013-04-13T06:18:25.923 に答える