Vous ne pouvez pas modifier cette page, pour les raisons suivantes :
Documentation:
== Rendu == {{#ev:vimeo|118407713}} == Code == <syntaxhighlight lang="java"> import processing.video.*; import controlP5.*; ArrayList<LigneV> mesLignesV; ArrayList<LigneH> mesLignesH; ControlP5 cp5; int coef1, coef2; Capture video; void setup() { video = new Capture(this, 640, 480); video.start(); size(video.width, video.height); stroke(255); noFill(); strokeWeight(1); mesLignesV = new ArrayList<LigneV>(); mesLignesH = new ArrayList<LigneH>(); ////////// // partie concernant uniquement les sliders cp5 = new ControlP5(this); cp5.addSlider("coef1") .setPosition(5, 10) .setColorBackground(0) .setColorActive(color(255, 0, 0)) .setColorForeground(color(150, 150, 150)) .setColorCaptionLabel(color(150, 150, 150)) .showTickMarks(true) .setRange(1, 50) .setWidth(width-40) .setValue(8) ; cp5.addSlider("coef2") .setPosition(5, 20) .setColorBackground(0) .setColorActive(color(255, 0, 0)) .setColorForeground(color(150, 150, 150)) .setColorCaptionLabel(color(150, 150, 150)) .showTickMarks(true) .setRange(1, 20) .setWidth(width-40) .setValue(10); ////////// } void draw() { if (video.available()) { video.read(); } background(0); //image(video, 0, 0); // ajoute une ligne horizontale et verticale // toutes les deux frames if (frameCount%coef2 == 0) { mesLignesV.add(new LigneV(0)); mesLignesH.add(new LigneH(0)); } // dessine les lignes horizontales // et supprime celles qui sortent du cadre for (int i = mesLignesH.size ()-1; i >= 0; i--) { LigneH element = mesLignesH.get(i); if (element.numero > height) mesLignesH.remove(i); element.dessin(); } // dessine les lignes verticales // et supprime celles qui sortent du cadre for (int i = mesLignesV.size ()-1; i >= 0; i--) { LigneV element = mesLignesV.get(i); if (element.numero > width) mesLignesV.remove(i); element.dessin(); } } // Class pour les lignes vertes verticales class LigneV { int nbPoint = 49; int numero; float[] coordX = new float[nbPoint]; float[] coordY = new float[nbPoint]; LigneV(int index) { numero = index; for (int i=0; i<nbPoint; i++) { coordX[i] = numero; coordY[i] = i*10; } } void dessin() { beginShape(); stroke(0, 255, 0); for (int i=1; i<nbPoint-1; i++) { color pix; if (numero>0 && numero<width) { // récupère la couleur du pixel // survolé par le point de la ligne correspondant pix = video.pixels[int(numero+i*10*width)]; // dessine ce point curveVertex( // en le décalant vers la gauche // en fonction de la luminosité du pixel coordX[i] + numero - brightness(pix)/coef1, coordY[i] ); } } endShape(); numero +=1; } } // Class pour les lignes blanches horizontales class LigneH { int nbPoint = 65; int numero; float[] coordX = new float[nbPoint]; float[] coordY = new float[nbPoint]; LigneH(int index) { numero = index; for (int i=0; i<nbPoint; i++) { coordX[i] = i*10; coordY[i] = numero; } } void dessin() { beginShape(); stroke(255); for (int i=1; i<nbPoint-1; i++) { color pix; if (numero>0 && numero<height-1) { pix = video.pixels[int(i*10+numero*width)]; curveVertex( coordX[i], coordY[i]+ numero - brightness(pix)/coef1 ); } } endShape(); numero +=1; } } </syntaxhighlight> [[Catégorie:Processing]]
Résumé :
Modification mineure Suivre cette page
Annuler