top drop menu

Recent Post

화요일, 11월 15

프로세싱(11) : Processing에서 비디오를 재생하고 필터효과 주기

이번에는 로컬 하드에 있는 비디오를 재생하고 효과를 주는 방법에 대해 알아 보자. 재생할 비디오 파일을 data 폴더를 만들어 넣어 놓으면 된다. 아니면 절대 경로를 적어 주어야 한다. 상대경로는 테스트 안해 봤다. 

import processing.video.*; import com.hamoid.*; //프로세싱을 비디오로 저장하기 위해 VideoExport videoExport; //로컬동영상을 재생시 Movie를 라이브 카메라 영상을 사용시는 Capture를 사용 Movie myMovie; void setup(){ size(740, 580); frameRate(25); //동영상 파일 경로에 신경을 써야 한다. //파일명만 적어 주는 경우 스케치파일이 있는 디렉토리에 data디렉토리를 만들어서 //그곳에 동영상을 넣어야 한다. 아니면 절대 경로를 적어 주면 된다. myMovie = new Movie(this, "C:\\Users\\userid\\Videos\\20160921_112012.avi"); myMovie.frameRate(2); myMovie.play(); myMovie.loop(); //font PFont font = createFont("NanumGothic", 32); textFont(font); //video export videoExport = new VideoExport(this, "exportSample.mp4"); } void draw(){ background(180); //effect filter //tint(221,160,221); //수정 영상1 image(myMovie, width/2, 0, width/2, height/2); filter(THRESHOLD, 0.5); //수정 영상2 image(myMovie, 0, myMovie.height/2+50,width/2, height/2); //(video,x,y,w,h) filter(INVERT); //원본 영상 noTint(); image(myMovie, 0,0,width/2, height/2); //(video,x,y,w,h) //other filter //filter(THRESHOLD, 0.5); //filter(GRAY); //filter(BLUR, 1); //숫자가 높으면 적용치가 높아짐 //filter(POSTERIZE, 4); //filter(ERODE); //??? light area를 감소? //filter(DILATE); //light area를 증가? //text text("Video Filter", width * 3/5, height * 3/4); //video export videoExport.saveFrame(); } //call every time a new frame is available to read. void movieEvent (Movie m) { m.read(); } //큰 해상도 비디오 재생이 엄청 느려짐.




Blogger Widget