Bonjour à tous,
Je viens de découvrir le processing car je voudrais créer ou utiliser un logiciel vidéo qui pourrait permettre de figer des trainées lumineuses faites en temps réel.
Du lightpainting en temps réel en bref.
Je suis tombé sur un sketch : Peinture de lumière plus un lien pour télécharger des librairies GSVideo, jusque là tout va bien.
En sachant que je ne m'y entend pas du tout en processing, petite parenthèse lol.
Un message apparait me disant : NosuchMethodError: You may be using a library that's incompatible with this version of Processing.
Existe t il une version plus récente de GSVideo ( que je n'arrive pas à trouver sur le net ) ou carrément une librairie autre qui peut remplacer GSVidéo ?
Merci d'avance
Hors ligne
J'ai joints un fichier dans mon premier écrit que je ne vois pas, je vous envois donc le programme,
/*
*PeintureLum
réaliser des dessins à la lampe de poche en live
cdriko@free.fr
Licence
http://creativecommons.org/licenses/by-sa/2.0/fr/
*/
//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;
}
}
Hors ligne
Bonjour,
Depuis quelques lustres, la librairie GSVideo a été intégrée dans Processsing. Donc, tu peux utiliser pratiquement le même code :
import processing.video.*; Capture video; PImage masque; color black = color(0); int numPixels; int tolerance; void setup() { size(640, 480); video = new Capture(this, width, height); video.start(); masque= new PImage(width, height); numPixels = video.width * video.height; noStroke(); smooth(); background(0); video.mask(masque); tolerance = 127; } void draw() { if (video.available()) { video.read(); video.loadPixels(); masque.loadPixels(); float pixelBrightness; loadPixels(); for (int i = 0; i < numPixels; i++) { pixelBrightness = brightness(video.pixels[i]); if (pixelBrightness > tolerance) { masque.pixels[i] = video.pixels[i]; } else { masque.pixels[i] = black; } } updatePixels(); video.mask(masque); tint(255, 255, 255, 150); image(video, 0, 0); } } void mouseClicked() { background(0); } void keyPressed() { switch(keyCode) { case 83: print("sauvegarde de l'image..."); saveFrame("data/capt-####.jpg"); background(0); println("OK"); break; case 38: if (tolerance<255)tolerance++; println("tolerance="+tolerance); break; case 40: if (tolerance>0)tolerance--; println("tolerance="+tolerance); break; default: println("touche inconnue:"+keyCode); break; } }
Hors ligne
Et bien merci Mushussu,
Je vais tester ceci de suite.
Comme dit sur mon premier post, je ne comprends absolument rien au Processing, il se peut que je revienne vers vous pour le positionnement de ce que tu m'as envoyé dans le sketch
Encore merci de ta réponse
Hors ligne
Bon, je crois que je suis vraiment nul,
Je n'ai aucune librairie dans mon processing, et lorsque je vais sur Processing.org, je vois une multitude de librairie à télécharger, faut il que je les prenne toutes ?
Encore désolé de mon niveau zéro
Hors ligne
As-tu copier coller le bout de code que je t'ai fourni et l'as-tu executer ?
Il n'y a pas besoin de télécharger quoique ce soit.
Hors ligne
Oui, j'ai bien copier le bout de code que tu m'as donné à la place d'une partie au début puis j'ai essayer ton code tout seul et là Processing me dit :
The package " processing.video" does not exist. You might be missing a library
D'où ma question en fait
Hors ligne
Pour charger une librairie, tu peux passer par l'interface de Processing :
Sketch > Importer une librairie... > Ajouter une librairie... > et tu tapes "video" dans le champs de recherche.
Tu choisis alors "Video | GStreamer-based video library for Processing" et tu cliques sur le bouton "install".
Bon courage...
Hors ligne
Merci Olivier,
Je vais de ce pas tester ça
Merci à tous pour votre patience .
Hors ligne
ça fonctionne de suite bcp mieux merci.
bcp de latence ou plutôt de hachure sur les trainées lumineuses à tout hasard, dans quelle partie du code devrais je modifier quelques choses pour les supprimer ?
Encore un énorme merci à vous
Hors ligne
J'ai ma réponse, cela vient pas du code mais du matos que j'utilise, du coup ma question serait plutôt quelle partie du code modifier pour utiliser une go pro 3 branchée sur l'ordi ou carrément un apn du genre Canon 650 D ?
Encore merci à vous
Hors ligne
Bonjour,
Tu peux ajouter ce bout de code dans la méthode setup() :
String[] cameras = Capture.list(); if (cameras.length == 0) { println("There are no cameras available for capture."); exit(); } else { println("Available cameras:"); for (int i = 0; i < cameras.length; i++) { println(i + " : " + cameras[i]); } }
Branche la caméra que tu souhaites utiliser et exécute le programme. Tu devrais voir apparaître dans la console de l'IDE de Processing la liste des caméras disponibles. Si celle que tu souhaite y figure bingo, tu peux initialiser la capture avec
video = new Capture(this, width, height, cameras[0]);
En remplaçant le 0 par le nombre qui est inscrit de vent le nom de ta caméra.
Hors ligne
Olala, excellent, merci merci merci.
Y a t il un emplacement à respecter pour ce bout de code ou peut il être placer n'importe où,
je vais déjà faire quelques tests en attendant ta réponse
Encore mille merci
Hors ligne
Pour l'emplacement, j'ai compris ou glisser ce bout de code encore merci, le problème reste que les deux caméras que j'utilise ont besoin d'un logiciel pour être repérées par mon mac du coup processing ne me les propose pas
Je vais persévérer ...
Est il possible d'encoder une go pro ou un Canon 650 D ?
ça se rapproche et c'est grace à vous encore merci
Hors ligne
Pour la gopro, je ne sais pas q'il existe une API que l'on eut exploiter, mais pour le canon je verrais bien l'utilisation de gphoto2 avec ffmpeg Olivier t'aidera surement plus que moi sur le sujet.
Tu peux regarder ici :
http://gphoto-software.10949.n7.nabble. … d4238.html
Hors ligne
Pages: 1 2