salut
j'ai trouvé un code pour avoir 2 webcams sur le meme écran avec vidéo capture si ca interesse quelqu'un je founis le lien ya k demander . Mais ce qui m'interesse c'est 2 webcams avec Jmyron si quelqu'un à une piste...
A-
Hors ligne
Salut bichtrack
Ton code pour récupérer deux flux de webcam sur un même écran m'intéresse bien, si tu peux m'envoyer le lien stp. Sinon est ce que tu as trouver avec JMyron comment faire avec JMyron.
Thx
Hors ligne
salut,
je serais egalement intéressé par le lien, par contre, je ne peux pas te dire pour jmyron
Hors ligne
Salut,
Je ne sais pas si c'est le code auquel bichtrack faisait référence, mais voila un exemple de capture de 2 webcams :
http://processing.org/discourse/yabb2/Y … 1234875866
Et une autre discussion sur la capture de 2 webcams, avec openCV cette fois :
http://processing.org/discourse/yabb2/Y … 1237253804
Hors ligne
Salut,
la réponse est un peu tardive je bricolais un sarcophage bon alors je le colle la vu qu'il est court le code
import processing.video.*; int numPixels; Capture rightCamera; Capture leftCamera; PImage redImage; PImage blueImage; Boolean _isSetup; int[] previousFrame; int TOLERANCE = 100; boolean go = false; int fake_frame_rate = 0; int mode = 0; void setup() { _isSetup = false; size(720, 480); rightCamera = new Capture(this, width, height, 30); //select webcam from quicktime dialog rightCamera.settings(); //instantiate capture source for left image leftCamera = new Capture(this, width, height, 30); //select webcam from quicktime dialog leftCamera.settings(); redImage = new PImage(width, height); blueImage = new PImage(width, height); // this line may need a little adjustment numPixels = width*height; // for those of you not using an internal camera previousFrame = new int[numPixels]; _isSetup = true; } void updateMode(){ if(key == '1'){ mode = 1; }else if(key == '2'){ mode = 2; }else{ mode = 0; } } void draw() { loadPixels(); rightCamera.read(); rightCamera.loadPixels(); loadPixels(); leftCamera.read(); leftCamera.loadPixels(); if (!go) { for (int i = 0; i < numPixels; i++) { // For each pixel in the video frame... pixels[i] = rightCamera.pixels[i] +leftCamera.pixels[i]; } } else { int movementSum = 0; // Amount of movement in the frame for (int i = 0; i < numPixels; i++) { color currColor = rightCamera.pixels[i]+leftCamera.pixels[i];; color prevColor = previousFrame[i]; // Extract the red, green, and blue components from current pixel int currR = (currColor >> 16) & 0xFF; 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; if (movementSum > TOLERANCE) { // Render the difference image to the screen pixels[i] = 0xff000000 | (prevR << 16) | (prevG << 8) | prevB; } // Save the current color into the 'previous' buffer previousFrame[i] = currColor; } } updatePixels(); delay(fake_frame_rate); } void showRight(){ if(rightCamera.available()){ rightCamera.read(); image(rightCamera, 0, 0); } } void showLeft(){ if(leftCamera.available()){ leftCamera.read(); image(leftCamera, 0, 0); } } void showAnaglyph(){ createRightImage(); createLeftImage(); mergeImages(); } /* * Remove blue from right * camera feed and store in PImage */ void createRightImage(){ if(rightCamera.available()){ //right = red; rightCamera.read(); rightCamera.loadPixels(); redImage.copy(rightCamera, 0, 0, width, height, 0, 0, width, height); for(int i=0;i<redImage.pixels.length;i++) { float r = red(redImage.pixels[i]); float g = green(redImage.pixels[i]); redImage.pixels[i] = color(r,g,0); } } } /* * Remove red and green from left * camera feed and store in PImage */ void createLeftImage(){ if(leftCamera.available()){ //left = blue; leftCamera.read(); leftCamera.loadPixels(); blueImage.copy(leftCamera, 0, 0, width, height, 0, 0, width, height); for(int i=0;i<blueImage.pixels.length;i++) { float b = blue(blueImage.pixels[i]); // float g = green(blueImage.pixels[i]); blueImage.pixels[i] = color(0,0,b); } } } /* * Layer left and right images, screening * out the top image. Write image to display. */ void mergeImages(){ if(leftCamera.available() && rightCamera.available()){ image(blueImage, 0, 0); blend(redImage, 0, 0, width, height, 0, 0, width, height, SCREEN); image(blueImage, 0, height); image(redImage, width, height); } } void keyPressed() { if (key == ' ') go = !go; }
Hors ligne
Salut,
J'ai rajouté les balises [ code = processing ] ... [ / code]
Est ce que tu connais l'auteur de ce petit bout de code? Ce serait bien de l'indiquer, et si possible la source et la licence.
Hors ligne
SALUT,
merci emoc
voici pour l'oubli. Pécision: j'ai pas vérifié mais je crois que le code proposé n'est pas l'original j'ai du bricoler dedans et passer à autre chose...
**
* Copyright (c) 2008, Benjamin Eckel
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* http://creativecommons.org/licenses/LGPL/2.1/
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* Or see http://processing.datasingularity.com/gpl.txt
*/
Dernière modification par bichtrack (2009-12-09 00:08:11)
Hors ligne
Pages: 1