face_count(): Devuelve el numero de rostros encontradas en la imagen.
face_detect(): Devuelve un array con las coordenadas de los rostros disponibles.
Imágen sin procesar
Después de procesar
Numero de personas en la foto: 10
Monté la plataforma utilizando un servidor Ubuntu Hardy Heron con Apache2 y php5.
script:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;" />
<title>Detector de Rostros</title>
</head>
<body>
<h1>Open Computer Vision - Contador de personas</h1>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" ENCTYPE="multipart/form-data">
Archivo<input type="file" name="file">
<input type="submit" value="subir">
<input type="hidden" name="uploadflag" value="1">
</form>
<br>
<?php
if($_POST['uploadflag']==1){
if($_FILES['file']['tmp_name'] != ""){
$imagenfinal = "imagenes/foto".date("Ymdhis").".jpg";
$cascade = "/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml";
move_uploaded_file($_FILES['file']['tmp_name'],$imagenfinal);
$format = strtolower(substr(strrchr($imagenfinal,"."),1));
switch($format)
{
case 'gif' :
$type ="gif";
$img = imagecreatefromgif($imagenfinal);
break;
case 'png' :
$type ="png";
$img = imagecreatefrompng($imagenfinal);
break;
case 'jpg' :
$type ="jpg";
$img = imagecreatefromjpeg($imagenfinal);
break;
case 'jpeg' :
$type ="jpg";
$img = imagecreatefromjpeg($imagenfinal);
break;
default :
die ("<br>ERROR: tipo de archivo desconocido: $imagenfinal");
break;
}
$total = face_count($imagenfinal, $cascade);
$faces = face_detect($imagenfinal ,$cascade);
echo "Numero de personas en la foto: ".$total;
$color = imagecolorallocate($img, 132, 135, 28);
for($i=0; $i<$total; $i++) {
$face = $faces[$i];
$x1 = $face['x'];
$y1 = $face['y'];
$x2 = $x1+$face['w'];
$y2 = $y1+$face['h'];
imagerectangle($img, $x1, $y1, $x2, $y2, $color);
echo("<br>persona ".($i+1)." : ($x1,$y1) - ($x2,$y2)");
}
if($total>0) {
$dest = "imagenes/nuevafoto_".date("Ymdhis").".jpg";
if($type=="gif") imagegif($img, $dest);
if($type=="jpg") imagejpeg($img, $dest);
if($type=="png") imagepng($img, $dest);
if($type=="bmp") imagewbmp($img, $dest);
echo '<br><img src="'.$dest.'"><br>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'"></a>';
} else{ echo "<br>Debe subir una imagen<br>"; }
echo '<br><br><a href="'.$_SERVER['PHP_SELF'].'">Recargar</a>';
}
?>
</body>
</html>