Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// partage de liens //// une carte des membres//// (apéros) codelab


#1 2014-12-01 22:46:31 Générer lignes courbes webcam

lolate
nouveau membre
Date d'inscription: 2014-12-01
Messages: 3

Générer lignes courbes webcam



Bonjour à tous !

Tout d'abord merci d'avance pour votre aide.
Afin de finaliser mon projet de diplôme, j'ai besoin de coder via le logiciel Processing mais étant totalement novice, je patauge un peu ...

Je vous expose le problème : j'ai utilisé un code en ligne activant la caméra et créant un effet light-painting (Merci Cdriko), et je voudrais y ajouter un élément primordial pour la réalisation finale :

J'aimerais incorporer à l'écran où apparait l'image de la webcam une image générée aléatoirement - mon idée de base était de générer une image à partir de l'historique de navigation, ce serait parfait mais sûrement plus compliqué ? Ou via un autre logiciel ?
Cette image serait idéalement de simples lignes courbes - des "chemins" que nous pourrions suivre grâce à nos bras, notre corps etc. Pas forcément très esthétique, ce n'est pas le but, simplement qu'elles apparaissent sur l'écran ...

Je vous transmets le code que j'utilise comme base ...

Mon projet est à rendre mercredi soir et je suis totalement noyée là-dedans ...


//import de la librairie GsVideo
import codeanticode.gsvideo.*;

//objet video
GSCapture video;
PImage masque;

color black = color(0);
int numPixels;

int tolerance;

void setup() {
  size(640, 480); // Change size to 320 x 240 if too slow at 640 x 480
  // Uses the default video input, see the reference if this causes an error
  video = new GSCapture(this, width, height);
  video.start(); 
  masque= new PImage(width, height);
   numPixels = video.width * video.height;
  noStroke();
  smooth();
  background(0);
  video.mask(masque);//appliquer un masque à l'image video
  tolerance = 127; // Set the tolerance value
}

void draw() {
  if (video.available()) {
    video.read();
   
    ///creation du masque
    video.loadPixels();
    masque.loadPixels();
   
    float pixelBrightness; // Declare variable to store a pixel's color
    // Turn each pixel in the video frame black or white depending on its brightness
    loadPixels();
    for (int i = 0; i < numPixels; i++) {
      pixelBrightness = brightness(video.pixels[i]);
      if (pixelBrightness > tolerance) { // If the pixel is brighter than the
        masque.pixels[i] = video.pixels[i]; // tolerance value, make it white
      }
      else { // Otherwise,
        masque.pixels[i] = black; // make it black
      }
    }
    updatePixels();
   
      video.mask(masque);
   
    tint(255, 255, 255, 150);
   // blend(video, 0, 0, width, height, 0, 0, width, height, LIGHTEST);
    //blend(video, 0, 0, 33, 100, 67, 0, 33, 100, ADD);
  image(video,0,0);
    // Draw the webcam video onto the screen
  }
}

void mouseClicked() {
 
    background(0);///effacer l'écran
   
 
}

void keyPressed(){



switch(keyCode) {
  case 83: //S ou s
  print("sauvegarde de l'image...");
  saveFrame("data/capt-####.jpg");
   background(0);
   println("OK");
    break;
  case 38: //fleche du haut
  if(tolerance<255)tolerance++;
  println("tolerance="+tolerance);
    break;
   
    case 40://fleche du bas
    if(tolerance>0)tolerance--;
    println("tolerance="+tolerance);
    break;
  default:             // Default executes if the case labels
   println("touche inconnue:"+keyCode);   // don't match the switch parameter
    break;
}

}

Dernière modification par lolate (2014-12-01 22:48:25)

Hors ligne

 

#2 2014-12-02 08:01:23 Re : Générer lignes courbes webcam

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 753

Re: Générer lignes courbes webcam



Une possibilité est d'afficher en dernier une image avec de la transparence :

Cette image, je l'ai construite avec ceci :

PImage resultat;

void setup() {
  size(640, 480);
  noFill();
  noLoop();
  resultat = createImage(width, height, ARGB);
}

void draw() {
  background(255);
  strokeWeight(3);
  stroke(0);
  for (int i = 0; i < 15; i++) {
    bezier(0, 80 + i * 30, i * random(0, 200), 90 + i * random(0, 20), i * 10, 10, width, 20 + i * 40);
  }
  loadPixels();
  resultat.loadPixels();
  for (int i = 0; i < width * height; i++) {
    resultat.pixels[i] = color(0, 255 - brightness(pixels[i]));
  }
  resultat.updatePixels();
  resultat.save("Lignes.png");
}

Dernière modification par Mushussu (2014-12-02 08:42:42)

Hors ligne

 

#3 2014-12-02 15:40:28 Re : Générer lignes courbes webcam

lolate
nouveau membre
Date d'inscription: 2014-12-01
Messages: 3

Re: Générer lignes courbes webcam



Ça fonctionne, merci beaucoup !! Serait-il possible d'animer ces lignes lors du tracé ?

Dernière modification par lolate (2014-12-02 15:45:02)

Hors ligne

 

#4 2014-12-02 19:59:29 Re : Générer lignes courbes webcam

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 753

Re: Générer lignes courbes webcam



Dans ce cas, c'est une autre approche :

PImage resultat;
float[] indiceA, indiceB;
int[] a, b;

void setup() {
  size(640, 480);
  noFill();
  resultat = createImage(width, height, ARGB);
  indiceA = new float[15];
  indiceB = new float[15];
  a = new int[15];
  b = new int[15];
  for (int i = 0; i < 15; i++) {
    a[i] = (int)random(0, 200);
    b[i] = (int)random(0, 20);
    indiceA[i] = (int)random(-100, 100);
    indiceB[i] = (int)random(-100, 100);
  }
}

void draw() {
  background(255, 0);
  strokeWeight(3);
  stroke(0);
  for (int i = 0; i < 15; i++) {
    bezier(0, 80 + i * 30, 4 * a[i] + noise(indiceA[i]) * 800, 90 + 4 * b[i] + noise(indiceB[i])* 500, i * 10, 10, width, 20 + i * 40);
    indiceA[i] += 0.01;
    indiceB[i] += 0.01;
  }
}

Hors ligne

 

#5 2014-12-04 13:19:50 Re : Générer lignes courbes webcam

lolate
nouveau membre
Date d'inscription: 2014-12-01
Messages: 3

Re: Générer lignes courbes webcam



Super, merci encore !

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017