This is an introductory tutorial for creating particles system in TouchDesigner. At the moment, it only has visual imagery. I’ll try to add audio for the explanation later.
PTAM Trial Run
Kinect Typography
It is a class for the School of Design.
Reference


Presentation material
Hello World
It is the name of a documentary on open source programming art practices.
People Detection in OpenCV again
There are a number of enquiries about the people detection video I did a while ago. It is a step by step explanation of what I have done. I use the XCode 4 in OSX Lion with OpenCV 2.3 to try out the following.
The first step is to download and build the latest OpenCV 2.3 into the folder at /Developer/OpenCV-2.3.0. The headers are in the include folder. Please note that you may have to copy the individual include folders from the modules folder. I build the shared libraries in the lib/Release folder.
The code is a modification of the sample peopledetect.cpp.
The second step is to display the video capture image. I use the example from the C++ reference manual in the highgui section.
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main (int argc, const char * argv[]) { VideoCapture cap(CV_CAP_ANY); if (!cap.isOpened()) return -1; Mat img; namedWindow("video capture", CV_WINDOW_AUTOSIZE); while (true) { cap >> img; imshow("video capture", img); if (waitKey(10) >= 0) break; } return 0; } |
The last step is to combine the two examples into one, with a little adjustment of the detection parameters and the display rectangle size.
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main (int argc, const char * argv[]) { VideoCapture cap(CV_CAP_ANY); cap.set(CV_CAP_PROP_FRAME_WIDTH, 320); cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240); if (!cap.isOpened()) return -1; Mat img; HOGDescriptor hog; hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); namedWindow("video capture", CV_WINDOW_AUTOSIZE); while (true) { cap >> img; if (!img.data) continue; vector<Rect> found, found_filtered; hog.detectMultiScale(img, found, 0, Size(8,8), Size(32,32), 1.05, 2); size_t i, j; for (i=0; i<found.size(); i++) { Rect r = found[i]; for (j=0; j<found.size(); j++) if (j!=i && (r & found[j])==r) break; if (j==found.size()) found_filtered.push_back(r); } for (i=0; i<found_filtered.size(); i++) { Rect r = found_filtered[i]; r.x += cvRound(r.width*0.1); r.width = cvRound(r.width*0.8); r.y += cvRound(r.height*0.06); r.height = cvRound(r.height*0.9); rectangle(img, r.tl(), r.br(), cv::Scalar(0,255,0), 2); } imshow("video capture", img); if (waitKey(20) >= 0) break; } return 0; } |
Please note that the performance is pretty slow even though the capture size is 320 x 240.
Facebook and RFID with CocaCola
I come across this video about the use of RFID bracelet to track visitors to a CocaCola event with Facebook integration.
Face Tracker in OSX
This video is the test run of the Face Tracker code by Jason Saragih. I compile and run it in OSX 10.7 with OpenCV 2.3.
Since Xcode will build the product into the user’s Library folder, I have to put the face model information in the product folder. In OSX 10.7, the Library folder in hidden. I have to unhide it by
chflags nohidden ~/Library/
OpenNI in Processing: simple-openni
I just found this very useful Processing wrapper for OpenNI. It included a number of useful functionalities in OpenNI.

OpenNI in Processing – User Tracker
The second example from the Java binding of OpenNI, the User Tracker.
It crashes when I run it in the 64bit OSX environment. For the demo, I run it in a 32bit Windows 7 machine.