Vicci Ho is a writer, film programmer and producer. She has written for Variety and worked for film festivals across the globe, including Toronto International Film Festival, Zurich Film Festival and directed the Hong Kong Lesbian & Gay Film Festival.  She is the President of Janitor Interactive: a production company specializing in games.

This is her personal page.

ICM week 7

This week's homework is working on pixels. I was really interested in the tracking camera but I couldn't get it to work particularly well on my computer. (I saw A LOT of crashes and red codes). I then moved onto playing with the camera and doing screen grabs, which I found an example of in the library (Framingham by Ben Fry) and altered it to make it more screen-grabby. I also wanted to add a form of color filter to it, so I spent a day trying to figure out how to do it. I am not sure if this is the best way but in the end I added a rectangle to my sketch which has a randomized HSB value, and I added a function to save the frame. I tried to put it on a webpage but I guess it can't tell the camera to load, but here are some stills from the program.


pic 2

group photo

and how it looks on video:

ICM week 7 - frameshots from Vicci Ho on Vimeo.

here is the code I used...basically tweaking Framingham to produce this week's sketch. I hope to play around with tracking some more this week.



Capture video; int column; int columnCount; int lastRow;

// Buffer used to move all the pixels up int[] scoot;

void setup() { frameRate (3); size(640, 480);

// This the default video input, see the GettingStartedCapture // example if it creates an error video = new Capture(this, 160, 120);

// Start capturing the images from the camera video.start();

column = 0; columnCount = width / video.width; int rowCount = height / video.height; lastRow = rowCount - 1;

scoot = new int[lastRow*video.height * width]; background(0); }

void draw() { // By using video.available, only the frame rate need be set inside setup() if (video.available()) {; video.loadPixels(); image(video, video.width*column, video.height*lastRow); colorMode (HSB, 360,100,100,100); fill (random (150,240),random (85,99),random (64,70),45); rect(video.width*column, video.height*lastRow, 160,120); column++; if (column == columnCount) { loadPixels(); //test color

// Scoot everybody up one row arrayCopy(pixels, video.height*width, scoot, 0, scoot.length); arrayCopy(scoot, 0, pixels, 0, scoot.length);

// Set the moved row to black for (int i = scoot.length; i < width*height; i++) { pixels[i] = #000000; } column = 0; updatePixels(); } } }

void mousePressed () { saveFrame ("screenshot-######.png"); }

Week 1 Web

it's getting there...