質問 |
||
| 質問者: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 |
|
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |