Dans un post précédent nous avons vu comment détecter les visages humains dans les images en utilisant JavaScript, maintenant nous allons voir comment le faire en utilisant PHP.
Installation :
Avant de lire plus loin, vous pouvez télécharger le code ci-dessous. Le code original JavaScript se trouve ici, le code suivant est complet avec une méthode crop ajouté avec un exemple de quelques fichiers.
Comme le code s’appuie sur la bibliothèque GD, assurez-vous qu’il est installé et activé sur votre système.
Exécution de notre code d’exemple :
L’exemple de code pour montrer le visage détecté est indiqué ci-dessous. Notez que dans les images ayant des faces multiples, seul le premier est détecté. Bien que cela puisse paraître comme une limitation, cela peut être utile dans les applications web qui ont besoin de créer une image de profil utilisateur à partir d’une image brute. Alors que si un utilisateur télécharge une image, le code donné peut détecter le visage et de créer automatiquement une photo de profil pour l’utilisateur.
include "FaceDetector.php";
$face_detect = new Face_Detector('detection.dat');
$face_detect->face_detect('sample-image3.jpg');
$face_detect->toJpeg();
Le code ci-dessus affiche une bordure autour du visage détecté, on peut directement culture la zone du visage et de sortie résultant de l’image résultante.
include "FaceDetector.php";
$face_detect = new Face_Detector('detection.dat');
$face_detect->face_detect('sample-image3.jpg');
$face_detect->cropFace();
Coordonnées du visage :
Si vous avez besoin des coordonnées du visage détecté pour un traitement ultérieur, vous pouvez utiliser la suivante.
// Return coordinates in JSON
// {'x':56.375, 'y':45.1, 'w':227.55}
$face_detect->toJson();
// OR
// Return coordinates as an Array
$face_detect->getFace();
Héritage du Classe :
Vous pouvez hériter la classe Face_Detector utilisant vos propres méthodes. Par exemple, j’ai ajouté trois méthodes s – Rotate(), resizeFace() et toGrayScale() à la classe, ce qui vous permet de modifier la zone du visage.
include "FaceDetector.php";
/* We now extend the above class so we can add our own methods */
class FaceModify extends Face_Detector {
public function Rotate() {
$canvas = imagecreatetruecolor($this->face['w'], $this->face['w']);
imagecopy($canvas, $this->canvas, 0, 0, $this->face['x'],
$this->face['x'], $this->face['w'], $this->face['w']);
$canvas = imagerotate($canvas, 180, 0);
$this->_outImage($canvas);
}
public function toGrayScale() {
$canvas = imagecreatetruecolor($this->face['w'], $this->face['w']);
imagecopy($canvas, $this->canvas, 0, 0, $this->face['x'],
$this->face['x'], $this->face['w'], $this->face['w']);
imagefilter ($canvas, IMG_FILTER_GRAYSCALE);
$this->_outImage($canvas);
}
public function resizeFace($width, $height) {
$canvas = imagecreatetruecolor($width, $width);
imagecopyresized($canvas, $this->canvas, 0, 0, $this->face['x'],
$this->face['y'], $width, $height,
$this->face['w'], $this->face['w']);
$this->_outImage($canvas);
}
private function _outImage($canvas) {
header('Content-type: image/jpeg');
imagejpeg($canvas);
}
}
/* Using the extended class */
$face_detect = new FaceModify('detection.dat');
$face_detect->face_detect('sample-image3.jpg');
$face_detect->resizeFace(100,100);
NB: Si pour quelque raison le code retourné une erreur, désactivez le error reporting dans le fichier php.ini
Autres liens
1. Automatic Face Detection in Photos with PHP
2. http://www.facedetection.com/
Source : http://www.codediesel.com




















Superbe article ! merci
c’est bien beau tout ça, dommage que ce n’est pas opensource