Part of the OpenCV functions are now available in Pure Data as extra libraries for the PDP and GEM. The software page is here.



I just found the new OpenCV 1.2 is out now. The windows installer is available. Let’s try it out.
Here you can find a new augmented reality game at the Future Dimension. Enjoy.
Here is a test with the OpenCV SURF sample adapted to a live camera video stream.
This is a very crude demonstration of integrating the OpenCV face detection facility into Ogre3D. The face location is used to place the sample facial mesh in Ogre3D.
Finally, I put up the documentation and files for the new version of SimpleARToolKit library for Processing. The official page is at http://www.bryanchung.net/?page_id=415.
Enjoy and happy coding.
Here is a trial run of the sample program come with the BazAR software from http://cvlab.epfl.ch/software/bazar/. I took a sample of my staff card and had it tracked and overlaid with a rectangle.
This one plays back four rectangular planes of digital videos. There are two separate videos loaded and played back.
People everywhere are talking about this one using an ActionScript version of ARToolKit with Papervision3D.
You can check out the live version from http://09.aid-dcc.com/.
Here is the source code for the last post using the new augmented reality library. In this case, I use the JMyron as the capture mechanism. It displays a short quicktime video “mv02.mov” on top of the marker.
import JMyron.*;
import processing.video.*;
import processing.opengl.*;
import pARToolKit.SimpleARToolKit;
SimpleARToolKit ar;
int capWidth, capHeight;
JMyron m;
Movie mov;
PImage img;
void setup() {
size(400, 300, OPENGL);
capWidth = 320;
capHeight = 240;
m = new JMyron();
m.start(capWidth,capHeight);
m.findGlobs(0);
img = createImage(capWidth,capHeight,ARGB);
mov = new Movie(this,"mv02.mov");
mov.loop();
mov.read();
ar = new SimpleARToolKit(this, capWidth, capHeight);
ar.loadPattern("patt.hiro", 80, 0.0f, 0.0f);
ar.register("showBox");
noStroke();
fill(200,200,0);
rectMode(CENTER);
frameRate(15);
}
void draw() {
background(0);
m.update();
m.imageCopy(img.pixels);
img.updatePixels();
hint(DISABLE_DEPTH_TEST);
image(img,0,0,width,height);
hint(ENABLE_DEPTH_TEST);
if (ar.findMatch(img,100)) {
ar.showObject();
}
}
void showBox(SimpleARToolKit _a) {
pushMatrix();
translate(0,0,-20);
beginShape(QUADS);
texture(mov);
vertex(-60,-45,0,240);
vertex(60,-45,320,240);
vertex(60,45,320,0);
vertex(-60,45,0,0);
endShape();
popMatrix();
}
void movieEvent(Movie _m) {
_m.read();
}
void stop() {
m.stop();
super.stop();
}