架空の映画のネタバレレビュー

プログラムについてです。グレースケールを2値化するプログラムが全く分かりません。画像を張るのでよろしくお願いします。

「プログラミングについて」の質問画像

A 回答 (4件)

No3 補足


型きちんと見てなかったので
hist[gray] ++;
if (gray < 128)  辺りがエラー(ワーニング)になるかもしれません

とりあえずエラー起こさないようにするだけなら
hist[(int)gray] ++;
if ((int)gray < 128) とでもしてください(もちろんgintでも構いません)
    • good
    • 0
この回答へのお礼

2値画像を作ることができました。ありがとうございます。

お礼日時:2015/12/24 18:26

どんな値への2値下を行いたいのか


境界値(閾値)は何なのか  がわかりませんが

0(黒)と255(白)の値に2値化するとして閾値128と仮定すると
>data[i]=data[i+1]=data[i+2]=0;
>hist[data[i]] ++;

の部分が以下のようになります
hist[gray] ++;  //デバック用?  グレー画像のヒストグラム
//輝度128未満なら0(黒)  128以上なら255(白)  に変換
if (gray < 128)
 data[i]=data[i+1]=data[i+2]=0;
else
 data[i]=data[i+1]=data[i+2]=255;
    • good
    • 0

輝度が0~0.5なら0、0.5~1なら1にすればいいのではないでしょうか。

    • good
    • 0

なにがどうわからないのかわかりません。



ソースを読むと、
data[i]=data[i+1]=data[i+2]=0;
の部分で、ピクセルを黒に塗りつぶしているように見えますが。

とりあえず、
data[i]=data[i+1]=data[i+2]=gray;
にしてみては、どうですか?

histはデバッグ用みたいなので無視します。
    • good
    • 0

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