ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Processing 구현중 3
    작가/코드 2014. 9. 16. 23:46



    RGB Average Image




    결과



    PImage[] img;

    int num = 4;    // number of images

    int loca = 0;    // index of pixels

    float[] r_total, g_total, b_total;    // 각 픽셀 위치의 RGB 값 합산 결과


    void setup()

    {

      size(500, 400);    // 타일드디스플레이의 각 모니터 가로세로 비율 기준

      

      img = new PImage[num];

      r_total = new float[width*height];

      g_total = new float[width*height];

      b_total = new float[width*height];

      

      //// images loading

      for (int i = 0; i < num; i++)

      {

        img[i] = loadImage("trip"+(i+1)+".jpg");

        img[i].resize(500, 400);

      }

    }


    void draw()

    {

      for(int i=0; i<(width*height); i++)

        {

         r_total[i]=0;

         g_total[i]=0;

         b_total[i]=0;

        }


    ////////// 끙끙대다 마지막에 풀린 부분

    // draw()는 setup()과 달리 반복적으로 호출된다.

    // 그러므로 전역변수에 for문 내의 값이 반복적으로 저장되는 걸 초기화시켜줄 필요가 있다.

    ////////// 스페셜땡스투 백구


      println(r_total[100]);    //// 문제 해결 후의 확인출력 (0.0과 255.0 사이의 값이 출력됨)

        

      for (int i = 0; i < num; i++)

      {

        //// each image started

        loadPixels();

        img[i].loadPixels();

        

        loca = 0;

        

        for (int y = 0; y < height; y++)

        {

          for (int x = 0; x < width; x++)

          {

            // loca = x + y * width;


            float r = red(img[i].pixels[loca]);

            float g = green(img[i].pixels[loca]);

            float b = blue(img[i].pixels[loca]);


            // pixels[loca] = color(r, g, b);

            

            r_total[loca] += r;

            g_total[loca] += g;

            b_total[loca] += b;

            

            loca++;    // 위 loca.. 줄보다 직관적인 것 같아서

          }

        }

        updatePixels();

        //// each image closed

      }

      


      //// pure draw region

      // println(r_total[100]);    //// 문제 해결 전의 확인출력 (값이 255.0을 훨씬 뛰어넘어 지속적으로 증가함)

      

        

      loadPixels();

      for (loca = 0; loca < (width*height); loca++)

      {

        pixels[loca] = color(r_total[loca]/num, g_total[loca]/num, b_total[loca]/num);

        //// 컬러 값을 컨트롤하는 pixels[]에 RGB 값를 넣을 뿐이지만 결과적으로는 이미지를 그리는 역할임

        //// 반드시 전후로 loadPixels() 및 updatePixels() 가 수반되어야 함

      }

      updatePixels();

      

      //// draw closing

    }



      

         


    trip1~4.jpg



    '작가 > 코드' 카테고리의 다른 글

    Processing 구현중 - Mosaic Learning 2  (0) 2014.10.19
    Processing 구현중 - Mosaic Learning 1  (0) 2014.10.19
    Processing 구현중 2  (0) 2014.09.16
    Processing 구현중 1  (0) 2014.09.12
    Processing Example - Alphamask  (0) 2014.09.11
Designed by Tistory.