|
|
(2 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| ==Pixel Motion Detection -- File Input ==
| | Sein und Nichtsein, das ist immer die Antwort. |
|
| |
|
| <pre style="font=2">
| | == Idee == |
| import processing.video.*;
| |
| Movie cam;
| |
| PImage save, out;
| |
|
| |
|
| //// threshold for fine-tuning and artefacts
| |
| float thresh = 2;
| |
|
| |
|
| void setup() {
| |
|
| |
|
| | == Hintergrund == |
|
| |
|
| ///change to your footage path
| |
| cam = new Movie(this, "E:/vids/MVI_5018.MOV");
| |
|
| |
|
|
| |
|
| cam.loop();
| | == Skizze == |
| cam.jump(random(cam.duration()));
| |
| cam.volume(0);
| |
|
| |
|
| |
| // set windows size to match footage resolution
| |
| size(cam.width, cam.height);
| |
|
| |
|
| |
|
| ///setup previous frame and output-image
| |
| save = createImage(cam.width, cam.height, RGB);
| |
| out = createImage(cam.width, cam.height, RGB);
| |
| }
| |
|
| |
|
| void draw() {
| | [[Image:Af_bioart_tmp.png|700px]] |
|
| |
|
| loadPixels();
| |
| motiondetect();
| |
|
| |
|
| out.updatePixels();
| |
| image(out, 0, 0, width, height);
| |
|
| |
| }
| |
|
| |
|
|
| |
|
| void motiondetect() {
| |
|
| |
|
| cam.loadPixels();
| |
| save.loadPixels();
| |
|
| |
|
|
| |
|
| ///scann through input pixels
| |
| for (int x = 0; x < cam.width; x ++ ) {
| |
| for (int y = 0; y < cam.height; y ++ ) {
| |
| int loc = y*cam.width+x;
| |
| color c = cam.pixels[loc];
| |
| color c_l = save.pixels[loc];
| |
|
| |
|
| ///get colors of each pxl
| |
| float r = red(c);
| |
| float g = green(c);
| |
| float b = blue(c);
| |
| ///get colors of each pxl -> prev frame
| |
| float r_l = red(c_l);
| |
| float g_l = green(c_l);
| |
| float b_l = blue(c_l);
| |
|
| |
|
| ///compare
| |
| float dif = dist(r, g, b, r_l, g_l, b_l);
| |
|
| |
|
| ///exchange pxls to make change visible
| | == Misc == |
| if (dif>thresh) {
| |
| out.pixels[loc] = color (abs(r-r_l), abs(g-g_l), abs(b-b_l));
| |
| } else {
| |
| out.pixels[loc] = color (0);
| |
| }
| |
| }
| |
| }
| |
| }
| |
|
| |
|
| | | [http://www.uni-weimar.de/medien/wiki/images/Drops_evalnature_color_trails.zip sketch for visual juicing] |
| void movieEvent(Movie m) {
| | [[File:Af_drops_simple_trails.png|720px|thumb|left|trails]] |
| | | [[File:Af_drops_color_corr.png|560px|thumb|left|color correction]] |
| ///get cam image and copy as previous frame
| |
| if (m.available()) {
| |
| save = m.get();
| |
| save.updatePixels();
| |
| m.read();
| |
| }
| |
| }
| |
| | |
| | |
| | |
| | |
| | |
| </pre>
| |