Deel 2: Prettige Processingprojecten en -recepten

2.1 Een digitale overheadprojector

import processing.video.*;
Capture mijnCamera;

void setup() {
  	size(640,480);
	mijnCamera = new Capture(this, width, height, 30);
}

void captureEvent(Capture mijnCamera) {
  	mijnCamera.read();
}

void draw() {
 	image(mijnCamera, 0, 0);
}

2.2 Camerabeelden bewaren

saveFrame("mijnMooiZelfPortret-#####.png");

2.3 Realtime effecten op webcambeelden voor de vjay

Voorbeeld 1:

void keyPressed(){
 
  switch (key) {
    case 'a':
      mfilter=0;
      break;
    case 'z':
      mfilter=1;
      break; 
    case 'e':
      mfilter=2;
      break; 
    case 'r':
      mfilter=3;
      break;   
     case 't':
      mfilter=4;
      break;   
    case 'y':
      mfilter=5;
      break;     
    default:  
      break;
  }

Voorbeeld 2:

 import processing.video.*;


Capture cam;

void setup() {
  size(640, 480);
  cam = new Capture(this, 640, 480);

}

int mfilter;

void draw() {
  if (cam.available() == true) {
    cam.read();
    image(cam, 0, 0);
    switch (mfilter) {
    case 0:
      filter(THRESHOLD, 0.7);
      break;
    case 1:
      filter(POSTERIZE, 4);
      break; 
    case 2:
      filter(GRAY);
      break;   
    case 3:
      filter(ERODE); 
      break;
     case 4:
      filter(INVERT); 
      break;
     case 5:
      filter(BLUR, 6); 
      break;
    default:  
      break;
  }
    
    
  }
} 

void keyPressed()
{
 
  switch (key) {
    case 'a':
      mfilter=0;
      break;
    case 'z':
      mfilter=1;
      break; 
    case 'e':
      mfilter=2;
      break; 
    case 'r':
      mfilter=3;
      break;   
     case 't':
      mfilter=4;
      break;   
    case 'y':
      mfilter=5;
      break;     
    default:  
      break;
  }
 
}

2.6 Face recognition: herken de dief (of de poes)

import hypermedia.video.*; 
import java.awt.Rectangle; 

OpenCV opencv; 
int xpos; 
int ypos; 
int ho; int br; 

void setup() { 
	size( 800,600 ); 	
	opencv = new OpenCV(this); 
	opencv.capture( width, height ); 	opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT ); 
} 
void draw() { 
	background(255,255,255); 
	opencv.read(); 
	image( opencv.image(), 0, 0 ); 	
	Rectangle[] faces = opencv.detect(); 	
	noFill(); 
	fill(204, 102, 0); 
	for( int i=0; i
;>

2.7 QR-codes lezen

Voorbeeld 1:

PImage online; void setup() { 
	String url ="http://www.schoolvoorbeeld.be/qr/qrgen.php?data=kris merckx"; 
	online = loadImage(url, "png"); 
	noLoop(); 
	size(500,500); 
} 
void draw() { 
	image(online, 0, 0); 
}

Voorbeeld 2:

import processing.video.*; 
import pqrcode.*; 
Capture video; 
String statusMsg = "Klik op de spatiebalk om een QR-code te scannen";
Decoder decoder;
void setup() { 
	size(400, 320); 
	video = new Capture(this, width, height-20, 30); 
	decoder = new Decoder(this);
	PFont myFont = createFont(PFont.list()[2], 14); 
	textFont(myFont); 
}
void decoderEvent(Decoder decoder) { 
	statusMsg = decoder.getDecodedString(); 
} 
void captureEvent(Capture video) { 
	video.read(); 
} 
void draw() { 
	background(0);
	image(video, 0, 0); 
	text(statusMsg, 10, height-4); 	
	if (decoder.decoding()) { 
		PImage show = decoder.getImage(); 
		image(show,0,0,show.width/4,show.height/4); 
		statusMsg = "Decoding image"; 
		for (int i = 0; i < (frameCount/2) % 10; i++) statusMsg += "."; 	
	}
}
void keyReleased() { 	
	String code = ""; 
	PImage savedFrame = createImage(video.width,video.height,RGB);
	savedFrame.copy(video, 0,0,video.width,video.height,0,0,video.width,video.height);
	savedFrame.updatePixels(); 
	saveFrame("QRtest###.png"); 
	decoder.decodeImage(savedFrame); 
}

2.8 Processing.js in webpagina's

(function(processing, $constants) { 
	function setup() { 		
		processing.size(400, 400); 
		processing.background(0); 
		processing.stroke(255); 
		processing.ellipse(200, 200, 300, 300); 
} processing.setup = setup; }) 

2.9 Externe data inlezen

Foto's laden

PImage MijnFoto; 
void setup() { 
	MijnFoto = loadImage("foto.jpg"); 
	noLoop(); 
}

void draw() { 
	image(MijnFoto, 0, 0); 
} 

Een afbeelding van een webserver inlezen

PImage onlineFoto; 
void setup() { 	
	String url = "http://www.computerkit.be/ar/foto.jpg"; 
	onlineFoto = loadImage(url, "png"); 
	noLoop(); 
} 
void draw() { 	
	image(onlineFoto, 0, 0); 
} 

Vectorafbeelding

PShape tekening;
void setup() { 
	size(1000, 800); 
	tekening = loadShape("tekening.svg"); 
	smooth(); 
	noLoop(); 
} 
void draw() { 
	background(0); 
	shape(tekening, 10, 10, 800, 600);
}

Gestructureerde gegevens

Voorbeeld 1:


	
		Joske Janssens
		Pietluttigenlaan 22
		Zilverbeke 2560
		joske.janssens@pmail.com
	
	
		Lut Lippens
		Eikelstraat 34
		Ganzegem 3260
		lut.lippens@spotmail.com
	

Voorbeeld 2:

 
 
	Mona Lisa 
	Girl with the pearl earring 
 

Voorbeeld 3:

XMLElement xml; 
void setup() { 
	size(200, 200); 
	xml = new XMLElement(this, "artworks.xml"); 
	int numArtworks = xml.getChildCount(); 
	for (int i = 0; i < numArtworks; i++) {  
		XMLElement artwork = xml.getChild(i); 
		int id = artwork.getInt("id"); 
		String dataUrl = artwork.getString("dataUrl"); 
		String imageUrl = artwork.getString("imageUrl"); 
		String awTitle = artwork.getContent(); 
		println(id + " : " + dataUrl + " " + imageUrl + " : " + awTitle);
	} 
}

Voorbeeld 4:

XMLElement xml; 
int i=0;
int numArtworks= 0;
   
void setup() { 
	size(200, 200); 
}

void draw(){
xml = new XMLElement(this, "artworks.xml"); 
  numArtworks = xml.getChildCount(); 
  XMLElement artwork = xml.getChild(i); 
  int id = artwork.getInt("id"); 
  String dataUrl = artwork.getString("dataUrl"); 
  String imageUrl = artwork.getString("imageUrl"); 
  String awTitle = artwork.getContent(); 
  println(id + " : " + dataUrl + " " + imageUrl + " : " + awTitle);
 
}

void keyPressed(){

  i++;
  if(i>numArtworks-1){
    i=0;  
  }
  
}

Video

import processing.video.*; 
Movie gebouw1900; 
void setup() { 
	size(1200, 800); 
	gebouw1900 = new Movie(this, "gebouw1900.mov"); 
	gebouw1900.loop(); 
} 
void draw() { 
	tint(255, 20); 
	image(gebouw1900, mouseX, mouseY); 
} 
void movieEvent(Movie m) { 
	m.read();
}

2.10 Processingprogramma's met elkaar laten praten

Een server opzetten

import processing.net.*; 
Server mijnServer; 
int val = 0; 
void setup() { 
	size(200, 200); 
	mijnServer = new Server(this, 5204); 
} 
void draw() {
	val = (mouseX, mouseY, mouseX); 
	background(val); 
	mijnServer.write(val); 
}

Een client-toepassing

import processing.net.*; 
Client mijnClient; 
int dataIn; 
void setup() { 
	size(200, 200); 
	mijnClient = new Client(this, "127.0.0.1", 5204); 
} 
void draw() { 
	if (mijnClient .available() > 0) { 
		dataIn = mijnClient.read(); 
		background(dataIn); 
	}
}

2.11 Interface-elementen toevoegen

Voorbeeld 1:

void draw() { 
	rect(20, 20, 60, 60); 
} 
void mousePressed() { 
	link("http://www.schoolvoorbeeld.be", "_new"); 
} 

Voorbeeld 2:

void btn(int btnX, int btnY, int btnW, int btnH, String btnT){
  rect(btnX, btnY, btnW, btnH);
  fill(0,0,0);
  textSize(16);
  text(btnT, btnX+20, btnY+20);
  fill(255,255,255);
}

Voorbeeld 3:

boolean overBtn(int x, int y, int width, int height)  {
  if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) {
    return true;
  } else {
    return false;
  }
}

Voorbeeld 4:

btn(10, 10, 100, 50, "Home");
overBtnTest= overBtn(10, 10, 100, 50);
btn(10, 200, 100, 50, "Contact");
overBtnTest2= overBtn(10, 200, 100, 50);

Voorbeeld 5:

boolean overBtnTest = false;
boolean overBtnTest2 = false;

void setup(){
  size(400, 400);
}

void draw(){
  btn(10, 10, 100, 50, "Home");
  overBtnTest= overBtn(10, 10, 100, 50);
  btn(10, 200, 100, 50, "Contact");
  overBtnTest2= overBtn(10, 200, 100, 50);
}

void btn(int btnX, int btnY, int btnW, int btnH, String btnT){
  rect(btnX, btnY, btnW, btnH);
  fill(0,0,0);
  textSize(16);
  text(btnT, btnX+20, btnY+20);
  fill(255,255,255);
}

boolean overBtn(int x, int y, int width, int height)  {
  if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) {
    return true;
  } else {
    return false;
  }
}


void mousePressed() {
  if (overBtnTest2) {
     println("Tweede knop geraakt."); 
  }
  if (overBtnTest) {
     println("Eerste knop geraakt.");
  }
}

2.12 Een user interface met G4P

Voorbeeld 1:

// Need G4P library
import g4p_controls.*;


void setup(){
  size(480, 320);
  createGUI();
  customGUI();
  // Place your setup code here
  
}

Voorbeeld 2:

void btnStartClick(GButton source, GEvent event) { //_CODE_:btnStart:770719:
  println("button1 - GButton event occured " + System.currentTimeMillis()%10000000 );
} 

Voorbeeld 3:

void btnStartClick(GButton source, GEvent event) { 
  println("GEKLIKT");
} 

2.13 Je interactieve animaties bewaren als een PDF

import processing.pdf.*;

void setup() {
  size(400, 400);
  beginRecord(PDF, "alles.pdf");
}

void draw() {
  strokeWeight(10);
  stroke(mouseX, mouseY, mouseX-mouseY);
  line(mouseX, mouseY, width/2, height/2);
  
}

void keyPressed() {
  if (key == 's') {
    endRecord();
    exit();
  }
}

home