Annonce

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


#1 2011-05-14 13:03:27 Webcam effet miroir

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 203

Webcam effet miroir



Salut à tous,

J'essaye de retourner le flux d'image provenant de ma webcam pour voir à l'écran comme dans un miroir.
J'ai beaucoup chipoter et je suis presque au bout de mes peines, il me manque juste un petit quelque chose.

Voilà mon résultat pour le moment :
http://codelab.fr/up/Capt.png

C'est plutôt glitch mais pas ce que je cherche, le sens du miroir est bon ainsi que les proportions mais j'ai tout en triple et les canaux couleurs sont éclatés.

Voici le code :

void testApp::update(){
	vidGrabber.grabFrame();
	if (vidGrabber.isFrameNew()){
		unsigned char * pixels = vidGrabber.getPixels();
		for(int j = 0; j < camWidth; j++){
			for (int i = 0; i < camHeight*3; i++){
		videoInverted[i*camWidth+j*3] = pixels[((camWidth - (j*3-1)) + i*camWidth)];
		//c'est ici qu'il manque un petit quelque chose
			}
		}
		videoTexture.loadData(videoInverted, camWidth,camHeight, GL_RGB);
	}
}

Avis avisés bienvenus;)


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#2 2011-05-14 17:11:27 Re : Webcam effet miroir

cdriko
modérateur
Lieu: Le Landreau
Date d'inscription: 2010-07-16
Messages: 76
Site web

Re: Webcam effet miroir



hello
j'ai pas regardé de près mais déjà c'est bizarre ton
camHeight*3


il ya une formule sur le forum processing, qui je pense est applicable ici :
int x = pixels.length % width;
int y = pixels.length / width;

à tous hasards...


http://processing.org/discourse/yabb2/Y … 1150745537

Hors ligne

 

#3 2011-05-14 17:14:01 Re : Webcam effet miroir

cdriko
modérateur
Lieu: Le Landreau
Date d'inscription: 2010-07-16
Messages: 76
Site web

Re: Webcam effet miroir



rectification

pixels[i+j*width]=pixels[i+(camHeight-j)*width]

sous processing
donc ptet ça marche ça dans ton truc :

videoInverted[i+j*camWidth] =videoInverted[i+(camHeight-j)*camWidth]

Dernière modification par cdriko (2011-05-14 17:15:21)

Hors ligne

 

#4 2011-05-16 14:01:26 Re : Webcam effet miroir

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 203

Re: Webcam effet miroir



Merci pour ton aide mais j'ai besoin de faire le *3 et c'est là qu'est la difficulté.
Le *3 sert pour les 3 canaux RGB de chaque pixel en oF ils sont séparés.

J'ai essayé ton code seul et avec des *3  mais j'ai des erreurs de segmentation, ce qui signifie que les tableaux ne correpondent pas.

Si quelqu'un à une idée ...


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#5 2011-12-04 23:29:47 Re : Webcam effet miroir

Honkytong
nouveau membre
Lieu: Montpellier
Date d'inscription: 2011-06-04
Messages: 2

Re: Webcam effet miroir



Il y aura toujours des gens pour réinventer la roue....
C'est tout con t'as une fonction dans OpenCV qui s'appelle FLIP_HORIZONTAL qui le fait très bien..
IL y en a plein d'autre d'ailleurs qui font des trucs cools.
Voilà le lien http://ubaa.net/shared/processing/openc … _flip.html

Et voici le code que tu voulais..:
import hypermedia.video.*;

OpenCV opencv;


void setup() {

    size( 640, 480 );

    opencv = new OpenCV(this);
    opencv.capture( 320, 240 );

}

void draw() {

    opencv.read();
    opencv.flip( OpenCV.FLIP_HORIZONTAL ); // flip vertically and horizontally
    opencv.absDiff();

    // display images
    image( opencv.image(OpenCV.SOURCE), 0, 0 );
    image( opencv.image(), 320, 0 );
}

Hors ligne

 

#6 2011-12-04 23:33:05 Re : Webcam effet miroir

Honkytong
nouveau membre
Lieu: Montpellier
Date d'inscription: 2011-06-04
Messages: 2

Re: Webcam effet miroir



Mille excuses je pensais que c'était sur Processing...
Je ne me suis pas encore mis à OpenFrameworks...

Hors ligne

 

#7 2011-12-05 11:23:28 Re : Webcam effet miroir

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 203

Re: Webcam effet miroir



Y'a pas de mal wink,

peut-être que ça va relancer l'intérêt de ce post en attendant je n'ai toujours pas trouvé le bon algorythme.


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#8 2012-01-13 21:01:36 Re : Webcam effet miroir

Turboconnard
membre
Lieu: Lyon
Date d'inscription: 2012-01-13
Messages: 42
Site web

Re: Webcam effet miroir



Bonsoir,
je vais sûrement dire une connerie mais comme tu ne parles pas d'avoir l'image dans les deux sens, la solution ne serait elle pas de paramétrer ta cam directement depuis son soft de configuration pour faire le flip ?
J'dis ça hein... j'dis rien.


[ Viande for life ! ]

Hors ligne

 

#9 2012-01-13 23:43:18 Re : Webcam effet miroir

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: Webcam effet miroir



Encore une technique P5 mais sûrement transposable et sans manip de pixel:

image(img, 0, 0);
scale(-1, 1); //permet "retourner" l'image sur l'axe X et change pas l'échelle sur l'axe Y
translate(img.width, 0);//pour replacer l'image à sa position d'origine

Hors ligne

 

#10 2012-01-16 18:57:35 Re : Webcam effet miroir

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 203

Re: Webcam effet miroir



Ok, merci, j'ai pas le temps d'essayer pour le moment mais dès que je peux, je vous tiens au courant.


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#11 2012-02-21 11:21:21 Re : Webcam effet miroir

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: Webcam effet miroir



as tu regarder si il n'y a pas sur ce site ce qu'il te faut ?
http://ofxaddons.com/

Hors ligne

 

#12 2012-02-21 16:10:54 Re : Webcam effet miroir

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 203

Re: Webcam effet miroir



Bonne idée,

J'ai essayé avec ofxImage qui propose une fonction mirror() mais malheureusement elle s'applique à une image, pas à un flux provenant de la webcam.
Il y a peut-être moyen de changer un flux en image mais ça reste à voir.

C'est bête je suis à un cheveu de la solution ...


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#13 2012-02-22 07:57:31 Re : Webcam effet miroir

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: Webcam effet miroir



et les wrapper opencv, ils ne possèdent pas la fonction mentionner plus haut ?

Hors ligne

 

#14 2012-02-23 14:52:22 Re : Webcam effet miroir

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: Webcam effet miroir



Je suis tombé la dessus en cherchant un tuto pour débutter openframework en parralèle de ma découverte du c++
http://vormplus.be/blog/article/mirrori … frameworks

Hors ligne

 

#15 2012-02-24 16:25:23 Re : Webcam effet miroir

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 203

Re: Webcam effet miroir



Super, merci beaucoup smile
Voici les précieuses lignes de codes ; j'étais encore loin de trouver :

void testApp::update(){
	vidGrabber.grabFrame();
	if (vidGrabber.isFrameNew()){
		unsigned char * pixels = vidGrabber.getPixels();
		for(int i = 0; i < camHeight; i++){
			for (int j = 0; j < camWidth*3; j+=3){
            int pix1 = (i*camWidth*3) + j;
            int pix2 = (i*camWidth*3) + (j+1);
            int pix3 = (i*camWidth*3) + (j+2);
            // mirror pixel number
            int mir1 = (i*camWidth*3)+1 * (camWidth*3 - j-3);
            int mir2 = (i*camWidth*3)+1 * (camWidth*3 - j-2);
            int mir3 = (i*camWidth*3)+1 * (camWidth*3 - j-1);
            // swap pixels
            videoInverted[pix1] = pixels[mir1];
            videoInverted[pix2] = pixels[mir2];
            videoInverted[pix3] = pixels[mir3];
			}
		}

		videoTexture.loadData(videoInverted, camWidth,camHeight, GL_RGB);
	}
}

Si tu veux je suis tombé dernièrement sur de chouettes tutos pour openframeworks, dont un pour débuter et un très complet sur openCv :

http://pkmital.com/home/teaching/


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2018