1 / 25

數位影像處理 Digital Image Processing

數位影像處理 Digital Image Processing. 吳育龍老師. What is Processing. http://www.processing.org 由 Ben Fry (Broad Institute) 及 Casey Reas (UCLA Design | Media Arts) 發起,並且是由 MIT Media Lab 的 Aesthetics and Computation Group 的構想發展出來的 Open Source

Download Presentation

數位影像處理 Digital Image Processing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 數位影像處理Digital Image Processing 吳育龍老師

  2. What is Processing • http://www.processing.org • 由Ben Fry (Broad Institute) 及Casey Reas (UCLA Design | Media Arts) 發起,並且是由MIT Media Lab的Aesthetics and Computation Group的構想發展出來的 • Open Source • Based on JavaLanguage,Processing code can be transformed to Java code • 主要用於藝術、影像、影音設計與處理 • Support Linux, Mac OS X and Windows

  3. Java Processing

  4. Processing下載與安裝

  5. Processing介面介紹(1) 開發中Sketch名稱 Processing版本 執行/停止/新Sketch /載入Sketch/儲存Sketch /匯出Sketch

  6. Processing介面介紹(2) 程式碼 輸出訊息 message print

  7. Processing介面介紹(3) • Help->Reference(->Extended) <Reference> Color

  8. Sketch介紹 • 每一個專案都稱為一個sketch,每個sketch都有一個和sketch名稱相同的目錄,並在此目錄中產生一個sketch主程式 • 所有的sketch都集中放在sketchbook中, sketchbook為檔案存放的路徑 • 程式執行所需資料(如圖檔、音效檔)可放置在與sketch主程式同目錄下的data目錄內(或與sketch主程式同目錄)

  9. Sketchbook設定 • File->Preference

  10. 第一個sketch • Hello World

  11. 匯出sketch • 可選擇匯出的格式 • Application

  12. 匯出Application

  13. Resource • Help->Reference • http://www.processing.org

  14. Internal Variable • width - int,視窗寬度 • height - int,視窗高度 • mouseX - int,滑鼠X座標 • mouseY -int,滑鼠Y座標

  15. Processing架構 • 基本模式(Basic Mode) • 連續模式(Continuous Mode) • Java模式(Java Mode)

  16. A Simple Example(Basic Mode) 視窗大小為200X200 設定背景色 設定填滿顏色 無線條 畫矩形 設定線條顏色 畫矩形 size(200,200); background(0,0,0); fill(255,0,0); noStroke(); rect(10,10,20,20); stroke(0,255,0); rect(10,40,20,20);

  17. Basic Structure (Continuous Mode) begin setup() draw() others() stop() end

  18. A Simple Example (Continuous Mode) void setup() { size(200, 200); noStroke(); fill(0, 100, 150, 200); } void draw() { background(255); ellipse(width-mouseX, height-mouseY, 50, 50); ellipse(mouseX, mouseY, 50, 50); } <try> 加入smooth() <try> Alpha的影響 <try> 放在draw和setup的差別 <think> 怎麼讓兩個圓形有不同顏色

  19. Image • PImage-儲存image的資料型別 • loadImage(URL) -從URL(包含本地路徑)載入圖片 • image(Image,X, Y) -在座標(X,Y)顯示Image • tint(R,G,B) -將要顯示的圖片染成指定的顏色 • noTint() -取消染色設定 • Background(Image) -將Image顯示為背景,大小需要和視窗一樣大

  20. Picture is tinted color PImage b; size(640,240); b = loadImage("lenna.png"); tint(100, 0,100); // Tint purple image(b, 0, 0,320,200); noTint(); // Disable tint image(b, 320,0,320,200); <Reference> 可改變長寬比

  21. Video 注意:外部Library import processing.video.*; • Movie-儲存影片的資料型別 • Methods • read() -讀取影片資料 • available() -boolean,確認影片資料是否可讀取 • play() -播放一次影片 • loop() -不斷播放影片 • pause() -暫停播放影片 • stop() -停止播放影片 • noLoop() -若目前是loop狀態,則播放結束後就不繼續播 • jump(Second) -跳到Second秒數的位置播放 • duration() -float,以秒數表示影片總長度 • time() -float,以秒數表示目前影片已播放的時間 • speed(Rate) -設定播放速度,Rate=1為正常,Rate>1則變快,1>Rate>0則變慢,Rate=-1則倒轉 • frameRate(FPS) -設定一秒鐘播放FPS個畫面

  22. void draw() { if(myMovie.available()) myMovie.read(); image(myMovie, 0, 0); } 第二種作法 Play movie repeatedly import processing.video.*; Movie myMovie; void setup() { size(180,160,P2D); background(0); myMovie = new Movie(this, "station.mov"); myMovie.loop(); } void draw() {image(myMovie, 0, 0);} void movieEvent(Movie m) {m.read();} <試試看> 是否可用其他模式

  23. import processing.video.*; Movie myMovie; void setup() { size(640,480,P2D); background(0); myMovie = new Movie(this, "station.mov"); myMovie.loop(); } void draw() { for(int i=0;i<8;i++) for(int j=0;j<6;j++) { tint(i*30,256-j*40,(i+j)*5); image(myMovie, i*80, j*80,80,80); } } void movieEvent(Movie m) {m.read();}

  24. Control playing speed of movie import processing.video.*; Movie myMovie; int fps=15; float rate=1; void setup() { size(180,160,P2D); background(0); myMovie = new Movie(this, "station.mov"); myMovie.loop(); } void draw() {image(myMovie, 0, 0);} void movieEvent(Movie m) {m.read();} void mousePressed() { if(mouseButton==LEFT) {fps--;rate-=0.1;} else if(mouseButton==RIGHT) {fps++;rate+=0.1f;} if(fps<1) fps=1; //myMovie.frameRate(fps); myMovie.speed(rate); println("FPS: "+fps+" RATE: "+rate); }

More Related