Lab9-Blend-Chromakey


5530125621  น.ส.ฐิติพร ประสพโชคนภาพร (COM22023) (20/2/2556 (11:32:03))

MiniQuiz + TestScript
JLab>java Selftest 

JLab> testBlend     : ok ok ok ok ok  (5.0/5.0)
JLab> testChromaKey : ok ok ok ok ok  (5.0/5.0)
JLab> : -----------------------------
JLab> : คุณได้ 10.0 คะแนน (เต็ม 10.0)
JLab> : -----------------------------
JLab> :<POINT>10.0</POINT> (<TOTAL>10.0</TOTAL> )
JLab>

ได้ 10 คะแนน
Source Code
import jlab.graphics.DWindow;

public class ChromaKey {

  public static void main(String[] args) {
    DWindow fg = new DWindow();
    fg.loadImage("bird.gif");
    int w = fg.getWidth();
    int h = fg.getHeight();

    DWindow bg = new DWindow();
    bg.loadImage("sky.jpg",w, h);
    DWindow out = new DWindow(w, h);
    
    fg.setLocation(10, 10);
    bg.setLocation(10 + fg.getWidth(), 10);
    out.setLocation(10 + 2*fg.getWidth(), 10);
  
    out.setPixmap(chromaKey(fg.getPixmap(), bg.getPixmap(), DWindow.GREEN));
  }
  //-----------------------------------------------------------------
  public static int[][] chromaKey(int[][] fg, int[][] bg, int c) {
    int w = fg.length;
    int h = fg[0].length;
    int[][] b = new int[w][h];

    for (int x = 0; x < w; x++) {
      for (int y = 0; y < h; y++) {
        if (fg[x][y] == c) {
          b[x][y] = bg[x][y];
        }
        else {
          b[x][y] = fg[x][y];
          }
      }
   }       
    



    return b;
  }
  //-----------------------------------------------------------------
}
import jlab.graphics.DWindow; public class Blend { public static void main(String[] args) { int w = 300, h = 300; DWindow pic1 = new DWindow(w, h); DWindow pic2 = new DWindow(w, h); DWindow out = new DWindow(w, h); pic1.loadImage("cat.jpg", w, h); pic2.loadImage("baby.jpg", w, h); pic1.setLocation(10, 10); pic2.setLocation(10 + w, 10); out.setLocation(10 + 2 * w, 10); while (true) { for (double a = 0; a <= 1; a += 0.1) { int[][] b = blend(pic1.getPixmap(), pic2.getPixmap(), a); out.setPixmap(b); } for (double a = 1; a >= 0; a -= 0.1) { int[][] b = blend(pic1.getPixmap(), pic2.getPixmap(), a); out.setPixmap(b); } } } //----------------------------------------------------------------- public static int[][] blend(int[][] b1, int[][] b2, double a) { int w = b1.length; int h = b1[0].length; int[][] b3 = new int[w][h]; for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { int r1 = DWindow.getR(b1[x][y]); int r2 = DWindow.getR(b2[x][y]); int g1 = DWindow.getG(b1[x][y]); int g2 = DWindow.getG(b2[x][y]); int bl1 = DWindow.getB(b1[x][y]); int bl2 = DWindow.getB(b2[x][y]); double red = a * r1 + (1 - a) * r2; double green = a * g1 + (1 - a) * g2; double blue = a * bl1 + (1 - a) * bl2; b3[x][y]=DWindow.mixRGB((int)red,(int)green,(int)blue); } } return b3; } //----------------------------------------------------------------- }
SM=0, CM=5, ST=12, KY=365, TR=60:00
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 1014,;
ERR = 60:00 ;