viernes, 24 de febrero de 2012

Detección de Rostro en matlab

vid = videoinput('winvideo',1,'YUY2_640x480');
 set(vid, 'FramesPerTrigger', Inf);
  set(vid, 'ReturnedColorspace', 'rgb')
    vid.FrameGrabInterval = 5;
     start(vid)
while(vid.FramesAcquired<=100)
   data = getsnapshot(vid);
     diff_im = imsubtract(data(:,:,1), rgb2gray(data));  
           diff_im = medfilt2(diff_im, [3 3]);
        diff_im = imadju  st(diff_im);
     level = graythresh(diff_im);
   bw = im2bw(diff_im,level);
 BW5 = imfill(bw,'holes');
bw6 = bwlabel(BW5, 8);
 stats = regionprops(bw6,['basic']);
   [N,M]=size(stats);
if (bw==0)
        break;
else
     tmp = stats(1);
for i = 2 : N
      if stats(i).Area > tmp.Area
        tmp = stats(i);
      end
end
  bb = tmp.BoundingBox;
   bc = tmp.Centroid;
    imshow(data)
     hold on
   rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
 hold off
end
end
 stop(vid);
  flushdata(vid);

10 comentarios:

  1. esta linea tiene un error
    diff_im = imadju st(diff_im);

    ResponderEliminar
    Respuestas
    1. si tienes razon el editor automatico de html no mostro el codigo como debia, el comando es :
      diff_im=imagjust(diff_im);
      gracias

      Eliminar
  2. oye este mismo código podría utilizarse para detectar si hay una sonrisa, me podrías colaborar con eso, la verdad es que en la web no hay buena documentación de esto.
    excelente blog

    ResponderEliminar
    Respuestas
    1. Tal vez si, te recomentari q entres en http://www.mathworks.com/help/pdf_doc donde podras encontrar la guia completa del toolbox de analisis de imagenes, solo q esta en ingles, ahi en contraras toda la informacion

      Eliminar
  3. El error continua en esta linea "diff_im=imagjust(diff_im);" y ademas me arroja un problema con esto
    "Función o método no definido 'imagjust' para la entrada
    argumentos de tipo 'uint8'."

    Si puedes ayudarme con esto agradezco tu ayuda y si puedes responderme a este correo didier_80@hotmail.com

    ResponderEliminar
    Respuestas
    1. diff_im = imadjust(diff_im); deja así y funciona correctamente

      Eliminar
  4. Y si quiero reconocer 2 rostros...????

    ResponderEliminar
  5. en este momento no cuento con matlab 7 en el que desarrolle este programa, ya comenze a trabajar con la vercion 13 la 8 y hay algunas cosas incompatibles, asi q trabajo en esto,

    ResponderEliminar
  6. hoal quisiera saber como se puede cerrar la ventana, ya que ejecuto el programa y sirve pero al momento que le doy cerrar no me lo deja cerrar me abre otra vez la ventana ??

    ResponderEliminar
  7. me sale erro de getsnashot
    no me reconnoce

    ResponderEliminar