c言語による画像処理について
いつもお世話になってます。
c言語を使った画像処理を学び始めました。
入力画像の白(RGB値255,255,255)以外の画像を黒(RGB値0,0,0)
に変換するプログラムを作成したいと思っているのですが、
入力画像の大きさによっては正常に命令を実行してくれないことがあるので、
改善点をご教示いただきたいと考え投稿させていただきました。ソースプログラムは
#include<stdio.h>
#define nx 100 //画像の幅
#define ny 100 //画像の高さ
int main(void)
{
FILE *fp,*fp2;
int i,j;
unsigned char header[54];
unsigned char screen[nx][ny][3];
/* ファイルから読む */
fp=fopen("input.bmp","rb"); //ビットマップ形式 ,24ビットカラー
fread(header,1,54,fp); // ヘッダ(54バイト)を飛ばす */
fread(screen,1,nx*ny*3,fp); // 残りはデータ(最下行から順に入る)
//(255,255,255)以外なら黒(0,0,0)に
for(j=0;j<ny;j++)
for(i=0;i<nx;i++)
if(screen[j][i][0]!=255||screen[j][i][1]!=255||screen[j][i][2]!=255){
screen[j][i][0]=0;
screen[j][i][1]=0;
screen[j][i][2]=0;
}
fclose(fp);
/* ファイルに書く */
fp=fopen("output.bmp","wb");
fwrite(header,1,54,fp); /* ヘッダ */
fwrite(screen,1,nx*ny*3,fp); /* データ */
fclose(fp);
return 0;
}
となっています。ここで、画像の高さ、幅を100以下にすると正常に変換できなくなります。
どなたか原因がお分かりでしたらお知らせ願えないでしょうか?
お礼
ありがとうございます。