重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

C++を使ってモノクロのビットマップの画像の各ピクセルの輝度を数値化してテキスト形式で出力る物を作りたいと思っているんですが、ビットマップに対してどう処理してやればいいか分りません。誰か教えてください。

A 回答 (3件)

#1,2です。

別の事項なので、一応回答を分割。

> バイナリファイルのダンプ処理というのはどういったものなのか

ファイルオープン→1文字読み込み→内容を出力→ファイル末尾まで繰り返し
という、非常に単純な処理を繰り返してファイルの内容を表示(ダンプ)します。
16進数表示でどばっと出力されるようなものをダンプといいます。

#include<stdio.h>
int main(int argc,char **argv){FILE *fp=fopen(argv[1],"r");while(!feof(fp)){unsigned char c=getc(fp);printf("%d,",c);};fclose(fp);return 0;}

確認してないですけど、こんな感じです。

--
「fopen バイナリファイル ダンプ 」などのキーワードで検索しますと、具体的なコードを扱ったページが見つかると思います。

第11回 バイナリファイルを扱う
http://srd.yahoo.co.jp/PAGE=P/LOC=P/R=3/*http:// …
バイナリファイルの扱いとWAVEファイル
http://srd.yahoo.co.jp/PAGE=P/LOC=P/R=5/*http:// …

など。

--
扱うファイルのサイズが決まっているような場合、きめ打ちでも良いと思いますが、

126,128,127,127,…,129,128
125,126,126,128,…,128,127


127,129,131,131,…,129,127

のような出力が欲しい場合には、fread()を使用して横のサイズ分読み込む処理を縦のサイズ分繰り返し。
と言うような感じになると思います。
そんなにややこしくはならない気がしますが、プログラムそのものの回答を書くのもアレなんで。

#bmpファイルは上下ひっくり返っている場合もあるそうなので、その点は面倒かも?
    • good
    • 0
この回答へのお礼

ありがとうございました。まだまだプログラミングに関して勉強不足の点もたくさんありますので、教えていただいたことを参考に勉強していきたいと思います。

お礼日時:2003/11/27 14:36

#1です。


BMPファイルのフォーマットについて、こちらがわかりやすそうです。サンプルもありますし。

bmp ファイルフォーマット
http://www.kk.iij4u.or.jp/~kondo/bmp/

--
BMP、ビットマップ、format、ファイルフォーマット、BITMAPFILEHEADER
などのキーワードで情報収集してみてください。

参考URL:http://www.kk.iij4u.or.jp/~kondo/bmp/
    • good
    • 0

> C++を使って



開発環境を明示した方が良いと思います。
Windows2000, VC++6.0, MFC利用
など。


> モノクロのビットマップの画像の各ピクセルの輝度

モノクロというと、黒または白の2値でしょうか?
「輝度」というと256階調のグレースケールのようなイメージもありますが。

ビットマップは.bmpファイルの事?

--
一番シンプルな方法だと、bmpファイルのフォーマットさえ抑えれば、バイナリファイルのダンプ処理とさほど変わらない物になると思います。

この回答への補足

説明不足ですみませんでした。C++ builder4(ちょっと古いですが)を用いて、bmpファイルの各ピクセルの輝度を調べて表示するアプリケーションソフトを作りたいと思っています。8bitのbmpファイルに対しての処理なので、256階調でのグレースケールでの各ピクセルの輝度の値を求めたいと思っています。ちなみに、OSはwindows xpを使っています。
もしよろしければ、バイナリファイルのダンプ処理というのはどういったものなのか教えていただけますでしょうか?

補足日時:2003/11/27 10:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!