How to crop a capture from a webcam

edited November 2017 in Library Questions

Hi i found no way to crop the capture of my webcam.

How can i do this?

Thanks for helping me :)

Mysmaj

Tagged:

Answers

  • edited November 2017

    Hi boys! I'm looking for the equivalent to cam.crop in processing 3

    because i have a error:

    import pSmile.*;
    
    import processing.serial.*;
    import processing.video.*;
    //import pSmile.PSmile;
    //import cc.arduino.*;
    
    //Arduino Paco;
    Capture cam;
    ////Capture cam2;
    PImage uno;
    PImage dos;
    PImage img;
    PImage circulo;
    final int anchoCam = 1024;
    final int altoCam = 768;
    final int anchoLienzo = 1024;
    final int altoLienzo = 768;
    final int anchoImagen = anchoLienzo/2;
    final int altoImagen =altoLienzo;
    final int anchoDelta = (anchoCam-anchoImagen)/2;
    final int altoDelta = (altoCam-altoImagen)/2;
    //final int tiempoMinimo = 3;    //Tiempo de espera entre una foto y otra (segundos)
    //final int tiempoEspera = 0;    //Tiempo desde que tapa el sensor hasta que hace la foto (segundos)
    boolean sonriendo = true;
    boolean esperandoUno = true;
    boolean esperandoDos = true;
    PSmile smile;
    float res;
    //int tiempoUno, tiempoDos, tiempoLedUno, tiempoLedDos;
    final int luz = 50;      //Cambiar el número dependiendo de la luz que haya.
    
    int foto = 25;
    
    
    void setup() {
      //  Paco = new Arduino (this, Arduino.list()[0], 9600);
    
      //  Paco.pinMode (5, Arduino.OUTPUT);  //Puerto del LED de la izquierda
      //  Paco.pinMode (6, Arduino.OUTPUT);  //Puerto del LED de la derecha
    
      size (anchoLienzo, altoLienzo);
      cam = new Capture(this, anchoCam, altoCam, 30);
     //// cam2 = new Capture(this, anchoCam, altoCam, 30);
      cam.crop(anchoDelta, altoDelta, anchoImagen, altoImagen);
     //// cam2.crop(anchoDelta, altoDelta, anchoImagen, altoImagen);
    
      smile = new PSmile(this, anchoImagen, altoImagen);
    
      //println (Capture.list());
      cam.read();
      uno = cam.get();
     //// cam2.read();
     //// dos = cam2.get();
      circulo = loadImage("circulo.jpg");
      res = 0.0;
    }
    
    PImage updateImg(Capture cam, PImage lado) {
      cam.read();
      lado = cam.get();
      res = smile.getSmile(uno);
      sonriendo = res > 0;
      println(res);
      if (sonriendo) {
        img = loadImage(int(random(1, 4)) + ".jpg");      //Aquí es donde habría que cambiar 0 y 25 por otros números
      } 
      else {
        img = loadImage(foto + ".jpg");     //y aquí el 26 y el 50
        foto++;
        if (foto > 28) foto = 25;
      }
      lado.blend(img, 0, 0, anchoImagen, altoImagen, 0, 0, anchoImagen, altoImagen, SCREEN);
      lado.blend(circulo, 0, 0, anchoImagen, altoImagen, 0, 0, anchoImagen, altoImagen, MULTIPLY); //Se puede cambiar el modo de fusión de las fotos cambiando MULTIPLY por otro, como BLEND, ADD, SUBTRACT, DARKEST, LIGHTEST, DIFFERENCE, EXCLUSION, MULTIPLY, SCREEN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, DODGE o BURN.
      lado.filter(GRAY);
      return lado;
    }
    
    void draw() {
    
      background (0);
      if (keyPressed) {
        //if (Paco.analogRead(0) >= luz && (second()+60-tiempoUno)%60>tiempoMinimo) {          //Comprobar si tiene que ser <= o >=
        // if ((keyPressed == 'a') && (second()+60-tiempoUno)%60>tiempoMinimo) {
       if (key == 'a' || key == 'A') {
          //Paco.digitalWrite(5, Arduino.HIGH);
          /*  if (esperandoUno) {
           tiempoLedUno = second();
           esperandoUno = false;
           }
           if ((second()+60 - tiempoLedUno)%60 >= tiempoEspera) {*/
          uno = updateImg(cam, uno);/*
            tiempoUno = second();
           esperandoUno = true;
           //Paco.digitalWrite(5, Arduino.LOW);
           }*/
        } 
        //    else if (Paco.analogRead(1) >= luz && (second()+60-tiempoDos)%60>tiempoMinimo) {    //Comprobar si tiene que ser <= o >= aquí también
        //  else if ((keyPressed == 'b') && (second()+60-tiempoDos)%60>tiempoMinimo) {
        else if (keyCode == DOWN) {
          //Paco.digitalWrite(6, Arduino.HIGH);
          /*  if (esperandoDos) {
           tiempoLedDos = second();
           esperandoDos = false;
           }
           if ((second()+60 - tiempoLedDos)%60 >= tiempoEspera) {*/
         ////dos = updateImg(cam2, dos);/*
         ////   tiempoDos = second();
         ////  esperandoDos = true;
           //Paco.digitalWrite(6, Arduino.LOW);
          //// }*/
        }
      }
      image(uno, 300, 0, anchoImagen, altoImagen);
      //// image(dos, anchoImagen, 0, anchoImagen, altoImagen);
    }
    
  • unreadable

    edit post, highlight code, press ctrl-o to format

  • i have a error

    you don't say what it is...

  • thankS

    error: the funtion crop (int, int, int, int) does not exist

  • i want a capture croped

  • edited November 2017

    a picture is playing on the screen, but if somebody press key (a) then capture a frame of a webcam and are mixing with a filter. this is my first target.

    The second target gets what if detect a person smiling mixed with other pictures. sorry my English

  • edited November 2017

    Re:

    I'm looking for the equivalent to cam.crop in processing 3

    You see for example this part:

    ...PImage lado){
    ...
    lado = cam.get();
    

    So you used cam.get() to load the data into a PImage. Both get() and PImage.get() (and Capture.get()..?) can take four arguments defining a selection box -- see:

  • Please close this discussion.

    I just realized that this was a hijacked earlier post. -- see @guspelina 's new thread here:

    https://forum.processing.org/two/discussion/25055/how-could-do-what-a-capture-from-webcam-show-croped-no-resize

This discussion has been closed.