#author("2019-05-21T17:44:48+09:00","default:qua","qua") #author("2019-05-21T17:45:02+09:00","default:qua","qua") #navi(Processing/2.ちょっと発展) * 2-8.画像処理 [#x3318ccf] * 2-9 画像処理 [#x3318ccf] 画像に処理を施してみよう。 PImage gazou; size(640,480); gazou = loadImage("z:/Pictures/sakura.jpg"); image(gazou,0,0,width,height); filter(BLUR,4); このスケッチを実行すると画像がぼやけて表示されるだろう。 filter()は画像を加工する命令であり、次のものが用意されている。 |filter(THRESHOLD, t)|tは0から1の値。画像を明るさによって、白か黒のどちらかにする。tの値が大きいほど黒くなりやすい。| |filter(GRAY)|画像をグレースケール(色を取り去った灰色の画像)にする| |filter(INVERT)|画像のRGBそれぞれの明るさを反転する| |filter(POSTERIZE,p)|RGB各色を255段階からp段階にする| |filter(BLUR, p)|画像をぼやけさせる。pはぼやけ具合| |filter(ERODE)|画像の明るい部分を暗くする| |filter(DILATE)|画像の暗い部分を明るくする| 以下のプログラムでは、キーを押すとそれに従ってフィルタを適用する。何かキーが押されると、void keyPressed() に書かれたコードが実行される。switch(key){ case 't': ... }の部分は、keyの値によって、処理を分岐させる。keyの値が't'ならば、case 't':の後の処理が、'g'ならばcase 'g':の後の処理が実行される。どれでもなければ、default:の後の処理が実行される。それぞれの処理の末尾には、そのことを示すためにbreak;を記す。 PImage gazou; int mode; void setup(){ size(640,480); gazou = loadImage("z:/Pictures/sakura.jpg"); mode = 0; } void draw(){ image( gazou, 0, 0, width, height); if( mode != 0 ){ filter(mode); } } /* キーが押されるとこの部分が実行される */ void keyPressed(){ switch(key){ case 't': mode=THRESHOLD; break; case 'g': mode=GRAY; break; default: mode=0; } } **課題 [#ue7d984d] 上のプログラムに、他のフィルタを追加せよ。ただし、POSTERIZEは2番目のpを省略できないので、追加しなくてよい。