tande lab.

[Processing] 画像から色を抽出する

久しぶりに Processing ネタでも。
Processing は画像の色を使う操作がとても簡単です。

例えばこの画像の色を使って
https://lh6.googleusercontent.com/-9t5egV7NgrQ/SjmjSrfCmqI/AAAAAAAARr0/dFZi4wXm7cw/s400/P1040840.JPG
こんなのが作れたりします。
https://lh4.googleusercontent.com/-CoNwQ4Gh66M/UW-jtvLWa_I/AAAAAAABSYc/vk6WnIW4lGY/s400/130418-0001.png

以下、サンプルコードです。

//写真から色を抽出してみる

PImage img; //画像用の型を用意

//初期化関数
void setup()
{
  img = loadImage("rogie.jpg");  //画像データを読み込む 
  size(img.width,img.height);
  background(255);
  
  noStroke();
  smooth();
}

//メインループ関数
void draw()
{ 
  float sizeNum =random(10,50); // ランダムに丸の大きさを10-50の間で設定
  int x = int(random(img.width)); // ランダムに色抽出先のX座標を設定
  int y = int(random(img.height)); // ランダムに色抽出先のY座標を設定
  color iro = img.get(x, y); //画像から色を抽出
  
  fill(iro, 126); //画像から抽出した色で描画
  ellipse(x, y, sizeNum, sizeNum); //丸を描画
}

これだけです。

このサンプルだと、フレーム毎に丸がどんどん増えて行くアニメーションになり、ずっと描画し続けているとモザイク画みたいのが出来上がります。

こんなの。
https://lh4.googleusercontent.com/-bL-15VmdtlI/UW-xDLcAc4I/AAAAAAABSYw/4pNLQ5lU8e8/s400/130418-0002.png

簡単な説明

上のサンプルコードでハイライトしている 22 行目が肝です。

img.get(x, y);

で、任意の画像の指定した座標から色を抽出して

color iro = img.get(x, y);

color 型の変数 iro に、色情報を格納します。

あとは、好きなところで fill して塗りつぶすだけ!

fill(iro, 126); //画像から抽出した色で描画
ellipse(x, y, sizeNum, sizeNum); //丸を描画

この場合は、透明度 126 で描画させています。




0 comments
Submit comment