Quantcast
Channel: Library Questions - Processing 2.x and 3.x Forum
Viewing all articles
Browse latest Browse all 2896

Capture movie and video (It is all wrong?)

$
0
0

Hello, I am very new on processing and try to make a capture movie with recorded video, but unfortunately, I can not fix it for many days and nights. I am very tired of all this. I want to quit but must to do for a college, and maybe in the future for installation. Can any of you help me please, and show me where is the problem(s)? Thank you (sorry for my English languages, are not my native languages)

                                        import processing.video.*;

                                        int numPixels;
                                        // Number of columns and rows in the system
                                        int[] previousFrame;
                                        // Variable for capture device
                                        Movie movie;
                                        Capture video;


                                        void setup() {
                                           size(640, 480);
                                          movie = new Movie(this, "VROXI.mp4");
                                          movie.loop();
                                        }

                                        // Step 4. Read new frames from the movie.
                                        void movieEvent(Movie movie) {
                                          movie.read();
                                        }

                                        // Step 5. Display movie.
                                        void draw() {
                                          image(movie, 0, 0);
                                          video = new Capture(this, width, height);

                                          // Start capturing the images from the camera
                                          video.start();
                                          video.read(); // Read the new frame from the camera
                                          video.loadPixels(); // Make its pixels[] array available

                                          numPixels = video.width * video.height;
                                          // Create an array to store the previously captured frame
                                          previousFrame = new int[numPixels];
                                          loadPixels();
                                        }
                                        // When using video to manipulate the screen, use video.available() and
                                        // video.read() inside the draw() method so that it's safe to draw to the screen

                                        {int movementSum = 0; // Amount of movement in the frame
                                        for (int i = 0; i < numPixels; i++) { // For each pixel in the video frame...
                                          color currColor = video.pixels[i];
                                          color prevColor = previousFrame[i];
                                          // Extract the red, green, and blue components from current pixel
                                          int currR = (currColor >> 16) & 0xFF; // Like red(), but faster
                                          int currG = (currColor >> 8) & 0xFF;
                                          int currB = currColor & 0xFF;
                                          // Extract red, green, and blue components from previous pixel
                                          int prevR = (prevColor >> 16) & 0xFF;
                                          int prevG = (prevColor >> 8) & 0xFF;
                                          int prevB = prevColor & 0xFF;
                                          // Compute the difference of the red, green, and blue values
                                          int diffR = abs(currR - prevR);
                                          int diffG = abs(currG - prevG);
                                          int diffB = abs(currB - prevB);
                                          // Add these differences to the running tally
                                          movementSum += diffR + diffG + diffB;
                                          // Render the difference image to the screen
                                          pixels[i] = color(diffR, diffG, diffB);
                                          // The following line is much faster, but more confusing to read
                                          //pixels[i] = 0xff000000 | (diffR << 16) | (diffG << 8) | diffB;
                                          // Save the current color into the 'previous' buffer
                                          previousFrame[i] = currColor;
                                        }
                                        // To prevent flicker from frames that are all black (no movement),
                                        // only update the screen if the image has changed.
                                        if (movementSum > 0) {
                                          updatePixels();
                                          println(movementSum); // Print the total amount of movement to the console
                                        }
                                        }

Viewing all articles
Browse latest Browse all 2896

Trending Articles