Buku Augmented Reality With ARToolkit

Buku Augmented Reality With ARToolkit
Dapatkan Segera

Leave Comment


ShoutMix chat widget

Wednesday, July 18, 2012

Pemograman: Image Processing Manipulation with Java Processing and JMRyon

Hello Selamat datang di A.R.T - pada tutorial kali ini saya akan membahas khusus manipulasi image processing dengan JMRyon Library. *sedikit curhat* saya pernah stress menghadapi library ini, karena instalasinya yang susah, tapi akhirnya berhasil setelah dibantu oleh teman-teman di forum processing. 

jadi saya bakal sedikit berbagi ilmu, tentang pengalaman saya belajar library ini, luar biasa mudahnya dan bahasa pemogramannya mudah dimengerti. yang penting anda tau konsep bahasa pemograman terstruktur atau OOP dengan Java. 

okeh, kita mulai saja belajarnya, apa itu JMRyon? JMyron (alias WebcamXtra) adalah library External untuk memanipulasi gambar tanpa harus menggunakan source code yang rumit, jadi degan JMRyon kita bisa membuat Image manipulasi seperti photoshop secara real time dengan WebCam. dengan JMRyon kita bisa menambahkan efek motion tracking, color tracking, pixel manipulation dll.  

untuk mendevelop JMRyon anda harus menginstall librarynya terlebih dahulu. dan saat instalasi library ini yang pernah membuat saya stress seharian.. haha. tapi tenang saja, nanti saya pandu untuk menginstall librarynya.

Note: Saya Menganggap Kalian sudah Menginstall Processing beserta Librarynya. Jika anda Masih Baru dengan Processing, silahkan Belajar dulu di TUTORIAL ini. 

oke, pertama-tama download JMRyon Library disini. silahklan download Download JMyron 0025, karena itu versi terbaru yang tidak memerlukan library tambahan seperti Windig dan Quicktime untuk menginstallnya.

setelah didownload, lalu diekstrak dan buka folder JMyron0025, kemudian didalam folder tersebut, Copy-paste folder JMyron kedalam folder libraries processing.


sekarang, coba geh buka folder JMRyon tersebut di folder libraries Processing. pasti ada folder dengan nama "copy these into processing root or system32", itu maksudnya kita disuruh mengCopy dua file library yang ada di file tersebut yaitu "DSVL.dll" dan "myron_ezcam.dll" kedalam Sytem32 Windows kita. So, Go Ahead buka windows Explorer, masuk ke C:/Windows/System32 - kemudian copy file DSVL.dll" dan "myron_ezcam.dll" kedalam folder System32 anda.



next, langkah selanjutnya yang banyak orang tidak tau (*termasuk saya awalnya :p), anda download file MSVCP71.DLL dan Msvcr71.dll  yang bisa anda dapatkan di link ini >> DOWNLOAD DISINI - setelah didownload copy-paste kedua file tersebut kedalam folder Sytem32 Windows anda. 


oke, jika sudah langkah terakhir tapi tidak wajib, hanya optional. buka folder JMyron0025 yang kita download sebelumnya, kemudian copy paste folder JMyron Examples ke dalam folder Examples Processing anda. 

Contoh: saya gunakan Processing 1.2.1 - saya install processing tersebut ke Drive C:/ maka saya copy folder JMRyon Examples ke C:/Processing 1.2.1/Examples/ 


jika sudah, sekarang buka Processing anda, lalu untuk permulaan Copy-Paste Source Code dibawah ini. Source Code tersebut, untuk menjalankan kamera kita.

import JMyron.*;

JMyron theMov;

void setup() {
  size(320, 240);
  
  theMov = new JMyron();
  theMov.start(width, height);
  theMov.findGlobs(0);
}

void draw() {
  theMov.update();
  int[] currFrame = theMov.image();

  // draw each pixel to the screen
  loadPixels();
  for (int i = 0; i < width*height; i++) {
    pixels[i] = currFrame[i];
  }
  updatePixels();
}

public void stop() {
  theMov.stop();
  super.stop();
}


kemudian jalankan play, maka akan ada Video Live Camera di Komputer kita. jika anda berhasil maka JMRyon anda sudah berhasil dijalankan. selamat. anda berhasil menginstall JMRyon. 


sekarang kita coba jalankan source code yang lain. kita akan melakukan Image Manipulation, dengan JMRyon. coba anda jalankan source code dibawah ini, dan lihat yang terjadi. 

import JMyron.*;

int NUM_SQUARES = 20;

JMyron theMov;
int sampleWidth, sampleHeight;
int numSamplePixels;

void setup() {
  size(320, 240);

  theMov = new JMyron();
  theMov.start(width, height);
  theMov.findGlobs(0);

  sampleWidth = width/NUM_SQUARES;
  sampleHeight = height/NUM_SQUARES;
  numSamplePixels = sampleWidth*sampleHeight;
}

void draw() {
  theMov.update();
  int[] currFrame = theMov.image();

  // go through all the cells
  for (int y=0; y < height; y += sampleHeight) {
    for (int x=0; x < width; x += sampleWidth) {
      // reset the averages
      float r = 0;
      float g = 0;
      float b = 0;

      // go through all the pixels in the current cell
      for (int yIndex = 0; yIndex < sampleHeight; yIndex++) {
        for (int xIndex = 0; xIndex < sampleWidth; xIndex++) {
          // add each pixel in the current cell's RGB values to the total
          // we have to multiply the y values by the width since we are 
          // using a one-dimensional array
          r += red(currFrame[x+y*width+xIndex+yIndex*width]);
          g += green(currFrame[x+y*width+xIndex+yIndex*width]);
          b += blue(currFrame[x+y*width+xIndex+yIndex*width]); 
        }
      }

      r /= numSamplePixels;
      g /= numSamplePixels;
      b /= numSamplePixels;

      fill(r, g, b);
      rect(x, y, sampleWidth, sampleHeight);
    }
  }
}

public void stop() {
  theMov.stop();
  super.stop();
}

Yapp,, sekian dulu yah tutorialnya. nanti saya lanjutkan lagi tutorial Image Processing ini. silahkan pelajari dulu source code diatas. Semoga Berhasil dan See Yaa..







    1 komentar:

    selamat siang mas...
    ane punya problema di pemrograman saya,,,,
    saya masukan semua koding di processing setelah itu sya run,,,
    eh hasilnya expecting EOF, found 'if'.
    ni listing programmnya :
    import processing.serial.*;

    // Step 2: Declare PFont variable
    PFont f;
    Serial myPort;
    // The serial port float[] vals;
    PrintWriter output;
    String heartrate = "Calculating your heart rate";

    void setup() {
    size(400,300);
    f = createFont("Arial", 18, true);
    frameRate(5);
    // List all the available serial ports

    println(Serial.list());
    // Open whatever port is the one you're using. myPort = new Serial(this, Serial.list()[12], 9600);
    // don't generate a serialEvent() unless you get a newline character:
    myPort.bufferUntil('\n');
    // An array of initiate values vals = new float[width];
    for (int i = 0; i < vals.length; i++) {
    vals[i] = 250;
    }
    int d = day(); // Values from 1 - 31
    int m = month(); // Values from 1 - 12
    int y = year(); // 2003, 2004, 2005, etc. int se = second();
    // Values from 0 - 59 int mi = minute();
    // Values from 0 - 59 int h = hour();
    // Values from 0 - 23
    String s = String.valueOf(d) + String.valueOf(m) + String.valueOf(y) + String.valueOf(h)
    + String.valueOf(mi) + String.valueOf(se);
    output = createWriter("data" + s + ".txt");
    }


    void draw() {
    background(0);
    // Draw lines connecting all points
    for (int i = 0; i < vals.length-1; i++) { stroke(255, 123, 0);
    strokeWeight(1.5);
    line(i, vals[i], i+1, vals[i+1]);
    }

    // Slide everything down in the array for (int i = 0; i < vals.length-1; i++) { vals[i] = vals[i+1];
    }

    // get the ASCII string:
    String inputString = myPort.readStringUntil('\n');

    if (inputString != null) {
    // trim off any whitespace:
    String inString = trim(inputString);
    output.println(inString);
    output.flush();
    // convert to an int and map to the screen height:
    int inByte = int(inString);
    // Add a new value
    vals[vals.length-1] = 250 - (inByte/5);
    println(inByte);
    textFont(f, 18);
    // Step 4: Specify font to be used fill(255);
    // Step 5: Specify font color
    // Step 6: Display Text
    text (inByte, 5, 290);
    }
    else {
    vals[vals.length-1] = 250;
    }
    if (inputString != null) {
    if (inputString.charAt(0) == 'Y') {
    heartrate = inputString;
    }
    }

    textFont(f, 18);
    // Step 4: Specify font to be used fill(255);
    // Step 5: Specify font color
    // Step 6: Display Text text (heartrate, 180, 290);
    }

    mohon bantuannya...
    balas melalui email saya ya bang...
    vicar.mendrofa@gmail.com

    Post a Comment

    Twitter Delicious Facebook Digg Stumbleupon Favorites More