(MATLABで行うように)ピクセルを直接制御できるように、Cで画像を読み取るにはどうすればよいですか?
私は古い方法を試しました:
FILE *fp;
fp = fopen("C:\\a.tif","r");
それは私に画像ファイルの形を与えるだけascii
です(私は思います)。
画像をピクセルレベルで制御し、画像を反転するなどの基本的な操作を行うにはどうすればよいですか?
(MATLABで行うように)ピクセルを直接制御できるように、Cで画像を読み取るにはどうすればよいですか?
私は古い方法を試しました:
FILE *fp;
fp = fopen("C:\\a.tif","r");
それは私に画像ファイルの形を与えるだけascii
です(私は思います)。
画像をピクセルレベルで制御し、画像を反転するなどの基本的な操作を行うにはどうすればよいですか?
libtiffを見てください。ほぼすべての画像形式にはある種のヘッダーデータがあり、多くはファイルサイズを適切に保つために圧縮されています。もちろん、ヘッダーを読み取って解凍を実行するCコードを書くこともできますが、他の誰かがすでにそれを行っているので、必要はありません。ここでいくつかのC画像ライブラリを探してください。
もう1つの質問は、操作のためにデータをどのような形式にするかです。一般的な選択は24ビットRGBです(つまり、R、G、およびBはそれぞれ0から255まで変化します)。MATLABでは、R、G、Bが0.0から1.0まで変化するdoubleとして表示されます。または、別の色空間(HSV、YUVなど)が必要な場合もあります。
整数演算は高速ですが、より面倒な場合があることを忘れないでください。
OpenCVはコンピュータービジョンライブラリですが、「低レベル」のタスクにも使用できます。BMP、DIB、JPEG、JPG、JPE、PNG、PBM、PGM、PPM、SR、RAS、TIFF、TIFをサポートしています。
ImageMagickのMagickWandはもう1つの良いオプションです
さまざまなタイプの画像をロードするためのオープンソースライブラリと、tiff画像をロードするためのlibtiffがいくつかあります。ただ遊んでみたいだけで、ファイル形式がそれほど重要でない場合は、netpbm形式(特にP5とP6)を見てみましょう。ローダーとセーバーを作成するのは非常に簡単で、もちろん良い練習になります。