Skip to content

Make Processing

조회 수 9620 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print 수정 삭제

영상의 이미지가 필터처럼 변하는것인데

엔터를누르면 이미지가 위에서 아래로 내려오면서 원과 선값으로 그림이 그려지는것이고

다시 엔터를 누르면 캠처럼 이미지가 변하는것인데 잘안되네요 무엇이 문제인것인지..

import processing.video.*;
 boolean first = true;
 int i;
 float im, imax, imin;
 float lasty, x, y;
   // parameters (play here)
 float ANGLE_SEED = 13; // 13 / 257 / 77
 float amod = ANGLE_SEED;
 float amod_inc = 0.5; // angle change for a new line
 boolean MODIFY_ANGLE = true;
 boolean cheek=true;


float smod = 0.7; // size modifier

Capture cam;

void setup() {
size(640, 480);
cam = new Capture(this, 640, 480);
imax = 640 * 480;
imin = 0;
smooth();
}

void draw() {

 

 


  if (first) {
    if (cam.available() == true) {
      cam.read();
      image(cam,0, 0);
      //cam.copy(cam, 0, 0, cam.width, cam.height, 0, 0, cam.width, cam.height);
     
      }
  }

 

 

 

if(cheek)

{

if(keyPressed==true){
         first =false;
         cheek=false;

 


cam.loadPixels();

 
  
  im += 640;
  if (im > imax) im = imax;
  for (i = int(imin); i < im; i++) {
    x = i%cam.width;
    y = floor(i/cam.width);

 


    if (MODIFY_ANGLE && (lasty != y)) amod += amod_inc;

    color cc = cam.pixels[i];
    stroke(cc);
    fill(cc);

    float bri = brightness(cam.pixels[i]);
    float sat = saturation(cam.pixels[i]);
   
    if (bri > 245) draw_lines(bri, x, y, amod - x/3, smod);
    else if (bri < 10) draw_lines_dark(bri, x, y, amod - x/3, smod);
    else {
      strokeWeight(sat / 15);
      float a = (360.0 / 255.0) * sat + amod;
      float x2 = x + bri/4 * random(0.7,1) * smod * cos(radians(a));
      float y2 = y + bri/4 * random(0.7,1) * smod * sin(radians(a));
      line(x, y, x2, y2);
      }
   
    if ((sat > 200) && (bri > 150)) { //
        draw_circle(sat, x, y, amod, smod);
        }
    lasty = y;
    }

imin = im;


if (im == imax) {
im =0;
}

 


}
}

 


else{

 


if ( keyPressed== false)

{

first=true;

cheek=true;

}

 

 

else{

         first =false;
         cheek=false;

 


cam.loadPixels();

 
  
  im += 640;
  if (im > imax) im = imax;
  for (i = int(imin); i < im; i++) {
    x = i%cam.width;
    y = floor(i/cam.width);

 


    if (MODIFY_ANGLE && (lasty != y)) amod += amod_inc;

    color cc = cam.pixels[i];
    stroke(cc);
    fill(cc);

    float bri = brightness(cam.pixels[i]);
    float sat = saturation(cam.pixels[i]);
   
    if (bri > 245) draw_lines(bri, x, y, amod - x/3, smod);
    else if (bri < 10) draw_lines_dark(bri, x, y, amod - x/3, smod);
    else {
      strokeWeight(sat / 15);
      float a = (360.0 / 255.0) * sat + amod;
      float x2 = x + bri/4 * random(0.7,1) * smod * cos(radians(a));
      float y2 = y + bri/4 * random(0.7,1) * smod * sin(radians(a));
      line(x, y, x2, y2);
      }
   
    if ((sat > 200) && (bri > 150)) { //
        draw_circle(sat, x, y, amod, smod);
        }
    lasty = y;
    }

imin = im;


if (im == imax) {
im =0;
}

 


}
}

 

 

}

 

 

 

}

 


void draw_lines(float s, float x, float y, float amod, float smod) {

int im = int((s - 245) / 5);

for (int i=0; i < im; i++) {

float b = random(amod, amod+90);

 

float l = im * random(10 * smod, 40 * smod);

float x2 = x + l * cos(radians(b));

float y2 = y + l * sin(radians(b));

strokeWeight(( 1 - (0.5 * im)) * smod);

line(x, y, x2, y2);

}

}


void draw_lines_dark(float s, float x, float y, float amod, float smod) {

int im = int(s / 2);

for (int i=0; i < im; i++) {

float b = random(amod, amod+90);

float l = im * random(10 * smod, 40 * smod);

float x2 = x + l * cos(radians(b));

float y2 = y + l * sin(radians(b));

strokeWeight(( 1 - (0.2 * im)) * smod);

line(x, y, x2, y2);

}

}


void draw_circle(float s, float x, float y, float amod, float smod) {

float dia = random(s / 50) * smod;

float ll = random(s / 3.0) * smod;

float ang = random(360);

float x2 = x + ll * cos(radians(ang));

float y2 = y + ll * sin(radians(ang));

strokeWeight(1);

ellipse(x2, y2, dia, dia);

}

 

  • profile

    안녕하세요..소스는 정상적으로 작동되네요..^^ 중간에 '}' 중괄호가 더 들어 있어서 에러나 나는 상황이였던 것 같네요..

    수정한소스 첨부파일에 업로드 해놓았으니 확인해보세요~ video_source.zip 

    열공!!!


    screenshot_03.png

  • ?
    조아진 2012.06.04 13:39

    지금 이게 그 중괄호를 지우면 이미지가 엔터를 눌럿을때만 됫다가 떼면 안그려지는거잖아요

    그런데저는 엔터를 한번 누르면 이미지가 위에서 아래로 싹 변하고

    다시 엔터를 누르면 캠처럼 구동이 되는것을 말하는건데 ,, ㅜ

  • ?
    조아진 2012.06.04 13:42

    이거는 계속 눌러야지 구동이 되는거에요 ,ㅜㅜ 한번만 누르면 구동이 되게 하고 싶은데 다시 누르면 캠이미지로 돌아가구

    import processing.video.*;

    boolean first = true;
    int i;
    float im, imax, imin;
    float lasty, x, y;

    // parameters (play here)

    float ANGLE_SEED = 13; // 13 / 257 / 77
    float amod = ANGLE_SEED;
    float amod_inc = 0.5; // angle change for a new line
    boolean MODIFY_ANGLE = true;
    float smod = 0.7; // size modifier

    Capture cam;

    void setup() {
    size(640, 480);
    cam = new Capture(this, 640, 480);
    imax = 640 * 480;
    imin = 0;
    smooth();
    }

    void draw() {
      if (first) {
        if (cam.available() == true) {
          cam.read();
          image(cam,0, 0);
          //cam.copy(cam, 0, 0, cam.width, cam.height, 0, 0, cam.width, cam.height);
         
          }
      }

    if(keyPressed==true){
             first =false;
             cam.loadPixels();

     
      
      im += 640;
      if (im > imax) im = imax;
      for (i = int(imin); i < im; i++) {
        x = i%cam.width;
        y = floor(i/cam.width);

        if (MODIFY_ANGLE && (lasty != y)) amod += amod_inc;

        color cc = cam.pixels[i];
        stroke(cc);
        fill(cc);

        float bri = brightness(cam.pixels[i]);
        float sat = saturation(cam.pixels[i]);
       
        if (bri > 245) draw_lines(bri, x, y, amod - x/3, smod);
        else if (bri < 10) draw_lines_dark(bri, x, y, amod - x/3, smod);
        else {
          strokeWeight(sat / 15);
          float a = (360.0 / 255.0) * sat + amod;
          float x2 = x + bri/4 * random(0.7,1) * smod * cos(radians(a));
          float y2 = y + bri/4 * random(0.7,1) * smod * sin(radians(a));
          line(x, y, x2, y2);
          }
       
        if ((sat > 200) && (bri > 150)) { //
            draw_circle(sat, x, y, amod, smod);
            }
        lasty = y;
        }

    imin = im;


    if (im == imax) {
    im =0;
    }

    }
    }

    void draw_lines(float s, float x, float y, float amod, float smod) {

    int im = int((s - 245) / 5);

    for (int i=0; i < im; i++) {

    float b = random(amod, amod+90);

     

    float l = im * random(10 * smod, 40 * smod);

    float x2 = x + l * cos(radians(b));

    float y2 = y + l * sin(radians(b));

    strokeWeight(( 1 - (0.5 * im)) * smod);

    line(x, y, x2, y2);

    }

    }


    void draw_lines_dark(float s, float x, float y, float amod, float smod) {

    int im = int(s / 2);

    for (int i=0; i < im; i++) {

    float b = random(amod, amod+90);

    float l = im * random(10 * smod, 40 * smod);

    float x2 = x + l * cos(radians(b));

    float y2 = y + l * sin(radians(b));

    strokeWeight(( 1 - (0.2 * im)) * smod);

    line(x, y, x2, y2);

    }

    }


    void draw_circle(float s, float x, float y, float amod, float smod) {

    float dia = random(s / 50) * smod;

    float ll = random(s / 3.0) * smod;

    float ang = random(360);

    float x2 = x + ll * cos(radians(ang));

    float y2 = y + ll * sin(radians(ang));

    strokeWeight(1);

    ellipse(x2, y2, dia, dia);

    }

     

  • profile
    smileblue 2012.06.05 10:35

    ㅎㅎㅎ 그렇군요..ㅡㅡ;;


    수정된 소스 올려드려요..우선 키가 지속적으로 눌러져 있는게 만들기 위해서 boolean start를 추가 했고요

    소스 가장 하단에 보시면 void keyPressed 함수를 사용해서 키가 눌려졌는 유무를 판단하게 했어요..

    보시면 이해 가능 하실거예요~


    즐프~~

     import processing.video.*;
    
    boolean first = true;
    int i;
    float im, imax, imin;
    float lasty, x, y;
    
    // parameters (play here)
    
    float ANGLE_SEED = 13; // 13 / 257 / 77
    float amod = ANGLE_SEED;
    float amod_inc = 0.5; // angle change for a new line
    boolean MODIFY_ANGLE = true;
    float smod = 0.7; // size modifier
    /////////////////////////추가된 소스 /////////////////////////
    boolean start = false;       // 키가 눌려졌는지 체크
    /////////////////////////////////////////////////////////////
    Capture cam;
    
    void setup() {
      size(640, 480);
      cam = new Capture(this, 640, 480);
      imax = 640 * 480;
      imin = 0;
      smooth();
    }
    
    void draw() {
      if (first) {
        if (cam.available() == true) {
          cam.read();
          image(cam, 0, 0);
          //cam.copy(cam, 0, 0, cam.width, cam.height, 0, 0, cam.width, cam.height);
        }
      }
    /////////////////////////// 추가된 소스 ///////////////////////////////
      if (start == true) {   // 기존에 keypress 로 되어 있는 것을 키가 눌려진상태를 유지해야 하기때문에 boolean 으로 바꿈
    ///////////////////////////////////////////////////////////////////////
        first =false;
        cam.loadPixels();
    
        im += 640;
        if (im > imax) im = imax;
        for (i = int(imin); i < im; i++) {
          x = i%cam.width;
          y = floor(i/cam.width);
    
          if (MODIFY_ANGLE && (lasty != y)) amod += amod_inc;
    
          color cc = cam.pixels[i];
          stroke(cc);
          fill(cc);
    
          float bri = brightness(cam.pixels[i]);
          float sat = saturation(cam.pixels[i]);
    
          if (bri > 245) draw_lines(bri, x, y, amod - x/3, smod);
          else if (bri < 10) draw_lines_dark(bri, x, y, amod - x/3, smod);
          else {
            strokeWeight(sat / 15);
            float a = (360.0 / 255.0) * sat + amod;
            float x2 = x + bri/4 * random(0.7, 1) * smod * cos(radians(a));
            float y2 = y + bri/4 * random(0.7, 1) * smod * sin(radians(a));
            line(x, y, x2, y2);
          }
          if ((sat > 200) && (bri > 150)) { //
            draw_circle(sat, x, y, amod, smod);
          }
          lasty = y;
        }
        imin = im;
        if (im == imax) {
          im =0;
        }
      }
    }
    
    void draw_lines(float s, float x, float y, float amod, float smod) {
      int im = int((s - 245) / 5);
      for (int i=0; i < im; i++) {
        float b = random(amod, amod+90);
        float l = im * random(10 * smod, 40 * smod);
        float x2 = x + l * cos(radians(b));
        float y2 = y + l * sin(radians(b));
        strokeWeight(( 1 - (0.5 * im)) * smod);
        line(x, y, x2, y2);
      }
    }
    
    void draw_lines_dark(float s, float x, float y, float amod, float smod) {
      int im = int(s / 2);
      for (int i=0; i < im; i++) {
        float b = random(amod, amod+90);
        float l = im * random(10 * smod, 40 * smod);
        float x2 = x + l * cos(radians(b));
        float y2 = y + l * sin(radians(b));
        strokeWeight(( 1 - (0.2 * im)) * smod);
        line(x, y, x2, y2);
      }
    }
    
    void draw_circle(float s, float x, float y, float amod, float smod) {
      float dia = random(s / 50) * smod;
      float ll = random(s / 3.0) * smod;
      float ang = random(360);
      float x2 = x + ll * cos(radians(ang));
      float y2 = y + ll * sin(radians(ang));
      strokeWeight(1);
      ellipse(x2, y2, dia, dia);
    } 
    ///////////////////////////// 추가된 소스 //////////////////////////////////
    void keyPressed()
    {
      if(key == 10)   // 엔터키의 키코드값(키보드와 컴퓨터 마다 다를수 있음)
      {
        if(start == false)
        {
          start = true; 
        }
        else
        {
          start = false; 
          first = true;
        }
      }
    }
    ///////////////////////////////////////////////////////////////////////////


Q&A

질문하는 공간입니다. 회원이면 누구나 질문/답변 할 수 있습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
297 Video 관련 하여 질문드립니다. 2 s8848m 2013.09.06 17451
296 Max/Msp 에서 OSC externals 파일들을 넣는 곳이 어딘지 궁금해서 질문드립니다. 1 file beautyfullcastle 2013.08.30 17121
295 아두이노 관련 질문드립니다. 7 망고 2013.10.09 10791
294 프로세싱 폰트관련 질문입니다. 1 방보람 2012.06.01 9628
» 프로세싱 캠에 대해 문의좀 해보려구요 ,, 4 조아진 2012.06.04 9620
292 감사합니다 ㅎ 3 방보람 2012.06.03 9292
291 프로세싱문의요 1 file 조아진 2012.06.04 8964
290 움직이는 오브제를 정지시키고 프린터로 출력.. 1 오후세시 2011.10.26 8563
289 프로세싱 시리얼통신에 관련하여 질문드립니다^^ 3 file songyun114 2013.06.12 8291
288 필터 이미지를 넣는 부분에서 문제가 . 4 file 조아진 2012.06.06 8278
287 키넥트 관련 질문드립니다 4 songyun114 2013.07.15 8117
286 processing 외부 txt 파일 한글 깨짐문제 1 biclen 2013.07.27 7881
285 사용자가 직접 타이핑 하기. 3 오후세시 2011.10.15 7708
284 processing과 vvvv 2 맨땅 2013.10.05 7578
283 다시올립니다 급해요 ㅜ 1 file 조아진 2012.10.12 7435
282 이재중 선생님께 질무운~ 5 file 망고 2013.09.27 7417
281 [질문] 프로세싱 2.0 b8에서 스탠드 얼론의 형태로 어플리케이션 생성시 오류가 납니다. 2 file soundnscape 2013.04.28 7147
280 한 번 더 질문 드릴게요 4 file 유구르트 2012.12.20 7005
279 이재중 선생님께, 프로세싱 워크샵 질문~ 2 file 망고 2013.06.18 6708
278 안녕하세요 :) 3 yuriri 2012.06.14 6637
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next ›
/ 15

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Copyright (c) 2012 Make Processing. All Right Reserved.

smileblue

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소