Created
August 30, 2014 02:38
Revisions
-
mudphone created this gist
Aug 30, 2014 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,83 @@ /** * Time Displacement * by David Muth * * Keeps a buffer of video frames in memory and displays pixel rows * taken from consecutive frames distributed over the y-axis */ import processing.video.*; Capture video; int signal = 0; //the buffer for storing video frames ArrayList frames = new ArrayList(); void setup() { size(640, 480); // This the default video input, see the GettingStartedCapture // example if it creates an error video = new Capture(this, width, height); // Start capturing the images from the camera video.start(); } void captureEvent(Capture camera) { camera.read(); // Copy the current video frame into an image, so it can be stored in the buffer PImage img = createImage(width, height, RGB); video.loadPixels(); arrayCopy(video.pixels, img.pixels); frames.add(img); // Once there are enough frames, remove the oldest one when adding a new one if (frames.size() > height/4) { frames.remove(0); } } void draw() { // Set the image counter to 0 int currentImage = 0; loadPixels(); // Begin a loop for displaying pixel rows of 4 pixels height for (int y = 0; y < video.height; y+=4) { // Go through the frame buffer and pick an image, starting with the oldest one if (currentImage < frames.size()) { PImage img = (PImage)frames.get(currentImage); if (img != null) { img.loadPixels(); // Put 4 rows of pixels on the screen for (int x = 0; x < video.width; x++) { pixels[x + y * width] = img.pixels[x + y * video.width]; pixels[x + (y + 1) * width] = img.pixels[x + (y + 1) * video.width]; pixels[x + (y + 2) * width] = img.pixels[x + (y + 2) * video.width]; pixels[x + (y + 3) * width] = img.pixels[x + (y + 3) * video.width]; } } // Increase the image counter currentImage++; } else { break; } } updatePixels(); // For recording an image sequence //saveFrame("frame-####.jpg"); }