7

(MATLABで行うように)ピクセルを直接制御できるように、Cで画像を読み取るにはどうすればよいですか?

私は古い方法を試しました:

FILE *fp;
fp = fopen("C:\\a.tif","r");

それは私に画像ファイルの形を与えるだけasciiです(私は思います)。

画像をピクセルレベルで制御し、画像を反転するなどの基本的な操作を行うにはどうすればよいですか?

4

5 に答える 5

4

libtiffを見てください。ほぼすべての画像形式にはある種のヘッダーデータがあり、多くはファイルサイズを適切に保つために圧縮されています。もちろん、ヘッダーを読み取って解凍を実行するCコードを書くこともできますが、他の誰かがすでにそれを行っているので、必要はありません。ここでいくつかのC画像ライブラリを探してください。

もう1つの質問は、操作のためにデータをどのような形式にするかです。一般的な選択は24ビットRGBです(つまり、R、G、およびBはそれぞれ0から255まで変化します)。MATLABでは、R、G、Bが0.0から1.0まで変化するdoubleとして表示されます。または、別の色空間(HSV、YUVなど)が必要な場合もあります。

整数演算は高速ですが、より面倒な場合があることを忘れないでください。

于 2009-10-20T11:26:32.147 に答える
4

OpenCVはコンピュータービジョンライブラリですが、「低レベル」のタスクにも使用できます。BMP、DIB、JPEG、JPG、JPE、PNG、PBM、PGM、PPM、SR、RAS、TIFF、TIFをサポートしています。

于 2009-10-21T21:35:45.613 に答える
3

jpegファイルを操作するにはlibjpegを使用し、tiffファイルはlibtiffを使用します。

もう1つの簡単なオプションは、多くの画像形式(PNG、JPEG、GIFなど)の操作を可能にするgdです。

于 2009-10-20T11:29:31.193 に答える
1

ImageMagickのMagickWandはもう1つの良いオプションです

于 2009-10-21T00:07:17.160 に答える
1

さまざまなタイプの画像をロードするためのオープンソースライブラリと、tiff画像をロードするためのlibtiffがいくつかあります。ただ遊んでみたいだけで、ファイル形式がそれほど重要でない場合は、netpbm形式(特にP5とP6)を見てみましょう。ローダーとセーバーを作成するのは非常に簡単で、もちろん良い練習になります。

于 2009-10-20T11:30:46.200 に答える