diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2011-09-14 12:43:45 +0300 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2011-09-14 12:43:45 +0300 |
| commit | 256bbdf8b127329252fba5fc3c069af378849d8f (patch) | |
| tree | 4af711f5560e00f8b2b0bddfb0cadaf694ec3c5b /webcam_buffer | |
| parent | 3a0a0a9922d17497ff7e05efb24d189316590bec (diff) | |
added webcam buffer project
Diffstat (limited to 'webcam_buffer')
| -rw-r--r-- | webcam_buffer/webcam_buffer.pde | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/webcam_buffer/webcam_buffer.pde b/webcam_buffer/webcam_buffer.pde new file mode 100644 index 0000000..83bd0e5 --- /dev/null +++ b/webcam_buffer/webcam_buffer.pde @@ -0,0 +1,58 @@ +import processing.video.*; + +Capture c; +VideoBuffer vb; + +void setup() +{ + size(200, 200); + c = new Capture(this, width, height, 30); + vb = new VideoBuffer(30, width, height); +} + +void captureEvent(Capture c) +{ + c.read(); + if (vb != null) + vb.addFrame(c); +} + +void draw() +{ + image(vb.getFrame(), 0, 0); +} + +class VideoBuffer +{ + PImage[] b; + int s; + int w; + int h; + int cur; + + VideoBuffer(int s, int w, int h) + { + this.b = new PImage[s]; + for (int i=0; i<s; i++) { + this.b[i] = new PImage(w, h); + } + this.s = s; + this.w = w; + this.h = h; + } + + void addFrame(PImage f) + { + System.arraycopy(f.pixels, 0, b[cur].pixels, 0, w * h); + b[cur].updatePixels(); + cur = (cur + 1) % s; + } + + PImage getFrame() + { + int i = int(random(s)); + //int i = cur - 1; + //i = i < 0 ? 0 : i; + return b[i]; + } +} |
