ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:dragonkei 画素を数えるプログラム
困り度:
  • 困っています
現在、画像処理のプログラミングをやっているのですが、
2値化画像で黒の画素部分の数を求めて面積を出すプログラムを作っているのですが上手く出来ません。
誤ってる所ばかりだと思いますが、一応作ったソースを載せておきます。

int i, j;
int histgram[color];

for(i=0; i<color; i++)
{
histgram[i]=0;
}
for(i=0;i<512;i++){
for(j=0;j<384;i++){
histgram[header[Isize][Jsize]]++;
}
}
printf("%d\n",histgram[i]);

画像の読込みは自分で出来るので、255(黒)の画素がいくつあるのかを求める部分だけでも教えていただけるとありがたいです。

どうかよろしくお願いします。
質問投稿日時:08/04/16 23:46
質問番号:3953573
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:hsyL 2値化された画像の黒の値が black
画像がW*Hの大きさのメモリ領域pic[]に入っているとして、
counterが黒の画素数として、
型は明瞭だから変数の宣言部は省きますが、

counter = 0; // 数える変数初期化
for (i=0;i<H;i++) { // 縦幅方向に動かす
for (j=0;j<W;j++) { // 横幅方向に動かす
index = i*W + j; // (j,i)のメモリ位置
if (pic[index] == black) {
counter++; // もしも値が黒だったら1を足す
}
} // for j
} // for i

で十分だと思います。こういうのは簡単明瞭なのが一番です。
なお、ふつうは8ビットなBMPとかTIFFとか黒0で白255
ですが、逆なんですね。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/04/17 22:35
回答番号:No.2
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

良回答10pt

回答者:tokichim たぶんコピペして持ってきた部分で変数名を直し忘れていると思われるのが3カ所。
i++,Isize,Jsize。たぶんj++,i,jのつもり。
あと最後のprintf()は意味ない。配列の範囲外のところを出力している。
255のところを出したいならhistgram[255]でしょう。
定義されてない変数はたぶんどこかで定義されているとみて触れない。
種類:回答
どんな人:専門家
自信:参考意見
回答日時:08/04/17 01:02
回答番号:No.1
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示良回答のみ表示