Video et pdf : Fabriquer des images à partir d’un film

Ce script permet de générer 100 images à partir d’un film, à intervalles réguliers. Il utilise la librairie vidéo de Processing et la fonction jump() pour choisir les frames.

Précédent | 10/27 | Suivant

Voici le code :

import processing.video.*;
Movie lefilm;
// nombre d'images à prendre moins 1
int nombre_images=99;
int capture_image=0;

void setup() {
 size(640, 480);
 // pas besoin d'un framerate rapide
 // Ce n'est pas une animation mais une machine à produire des images
 frameRate(8);
 lefilm = new Movie(this, "video.mov");
 lefilm.play();
}

void draw() {
 if(lefilm.available()) {
   lefilm.read();
   image(lefilm, 0, 0);
   // sauve l'image en tiff avec une numerotation automatique
   saveFrame("image-"+ capture_image +".tif");

   // preparer l'image suivante
   capture_image++;
   lefilm.jump((lefilm.duration()/nombre_images)*capture_image);
   if(capture_image > nombre_images){
     lefilm.stop();
     exit();
   }  
 }
}

Le code ne fonctionnera, évidemment que si on place un film dans le dossier du sketch, et que son nom est "video.mov". Modifier le code pour l’adapter au besoin.

prenez un film qui contient un nombre de frames égal ou supérieur au nombre d’images que vous désirez créer. Attention aux problèmes de mémoire si votre film est lourd. Il faudra modifier les préférences de Processing ou revoir la taille à la baisse si le script n’arrive pas à démarrer faute de mémoire.

Le script génère ici une série de tiff numérotés. Pour une numérotation automatique de type 001, 002, on peut utiliser le code saveFrame("image-###.tif");.

Voir aussi

Le script de "Cinema Redux" de Brendan Dawes a été fabriqué avec Processing. Il utilise un code assez proche.
A noter qu’un logiciel pour mac os X, "Thumber", a été créé pour faire du "Cinéma Redux" à la maison.