#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を省略できないので、追加しなくてよい。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS