Annonce

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


#1 2017-07-19 14:48:37 Régler l'origine du zoom dans une capture vidéo.

MadSam
nouveau membre
Date d'inscription: 2017-07-19
Messages: 2

Régler l'origine du zoom dans une capture vidéo.



Bonjour,
   je programme sur Processing depuis peu. En ce moment je suis en train de pondre un code destiner à contrôler une " machine vidéo " à l'aide de la kinect 360. Je vous passe les détails chiants, tout se passe bien mais je bute sur quelque chose d'assez bete :
   je voudrais qu'une webcam qui film en direct, effectue un zoom en fonction de la position d'un corps sur l'axe Z de la kinect. J'y arrive, mais le zoom prend son origine au Coin Supérieur Gauche de l'écran, or je voudrai zoomer au centre de l'image. J'espère être assez clair.

   Je vous ai extrait la méthode que j'utilise pour le zoom, comme ça vous pourrez tester ça simplement :

import processing.video.*;
Capture camera;
float zoom = 1.0;

void setup() {
  size(640, 480);
  camera = new Capture(this, width, height);
  camera.start();
}

void draw() {
  if (camera.available()) {
    camera.read();
  }
  if (zoom <= 1){
    zoom = 1;
  }
  scale(-zoom, zoom);
  image(camera, 0, 0,-width, height);
  println(zoom);
} 

void keyPressed() {

  switch(key) {

    case '+':
      zoom = zoom + 0.05;
      break;
  
    case '-':
      zoom = zoom - 0.05;
      break;
  }
}

Bon en gros dans mon code le "switchKey()" est remplacé par des conditions sur la valeur (position) de "bodyCenter.z".

Comment puis-je effectuer mon zoom au centre de l'image? Es-ce une question idiote?

Methode alternative pour le zoom :

import processing.video.*;
Capture camera;
float zoom = 0.0;
float Width ;
float Height ;

void setup() {
  size(640, 480);
  camera = new Capture(this, width, height);
  camera.start();
}

void draw() {
  if (camera.available()) {
    camera.read();
  }
  if (zoom <= 0.0){
    zoom = 0.0;
  }
  Width = (width + zoom);
  Height = (height + zoom);
  image(camera, 0, 0,Width, Height);
  println(zoom);
} 

void keyPressed() {

  switch(key) {

    case '+':
      zoom = zoom + 1;
      break;
  
    case '-':
      zoom = zoom - 1;
      break;
  }
}

Voila, la l'image est inversée à la verticale et son échelle est légèrement déformé mais si je trouve une astuce avec cette méthode je m'en arrangerai. Merci d'avance!
Si vous avez des questions ou que vous voulez voir le code en entier, qui marche plutôt bien, ya qu'a demander!

Hors ligne

 

#2 2017-07-19 20:30:04 Re : Régler l'origine du zoom dans une capture vidéo.

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

Re: Régler l'origine du zoom dans une capture vidéo.



Bonsoir,

Est)ce que cette solution te convient ?

import processing.video.*;
Capture camera;
float zoom = 1.0;

void setup() {
  size(640, 480);
  camera = new Capture(this, width, height);
  camera.start();
  imageMode(CENTER);
}

void draw() {
  if (camera.available()) {
    camera.read();
  }
  if (zoom <= 1){
    zoom = 1;
  }
  image(camera, width / 2, height / 2, width * zoom, height * zoom );
  println(zoom);
} 

void keyPressed() {

  switch(key) {

    case '+':
      zoom = zoom + 0.05;
      break;
  
    case '-':
      zoom = zoom - 0.05;
      break;
  }
}

Hors ligne

 

#3 2017-07-20 19:11:26 Re : Régler l'origine du zoom dans une capture vidéo.

MadSam
nouveau membre
Date d'inscription: 2017-07-19
Messages: 2

Re: Régler l'origine du zoom dans une capture vidéo.



Ca marche nickel! Merci c'est impec, ducoup c'était tout bète! Je bidouille tout ça et dés que ça marche comme je veux, je poste lecode processing complet ainsi que le code arduino!

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024