誤差拡散法を行うコードを書こうとしています。
img1に画像を読み込み、img2に誤差拡散法により2値化の際の近隣の誤差を、右のピクセルに移動させたときの出力結果をだしたいです。まず、img1にはGRAYフィルターをかけています。
以下のコードではimg2の出力画面が真っ黒になってしまいます。
対処法のアドバイスをいただきたいです。
PImage img1, img2;
void setup(){
size(1000, 500);
img1=loadImage("fruits.jpg");
img1.filter(GRAY);
image(img1, 0, 0);
loadPixels();
img2= createImage(500, 500, RGB);
}
void draw(){
int x, y, pos, pos2;
int e=0;
color pix=img1.pixels[1];
color pix2=0;
for(y=0; y<499; y++){
for(x=0; x<499; x++){
pos=x+y*500; pos2=pos+1; pix=pix2; if(red(pix)<=128 && green(pix)<=128 && blue(pix)<=128){ e=pix; pix2=img1.pixels[pos2]+e; ☆print(pix2+" "); img2.pixels[pos2]=color(0, 0, 0); } else{ e=pix-255; pix2=img1.pixels[pos2]+e; img2.pixels[pos2]=color(255, 255, 255); } }
image(img2, 500, 0);
}
}
ちなみに、☆印をつけた行でコンソールにピクセルの持つ値を出力したところ、7,8桁の数字が出力されていました。
グレースケールはRGBそれぞれ等しい0-255の値を持つと理解していたのですが、出力はどうしてこのようになるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/25 15:31