-
Notifications
You must be signed in to change notification settings - Fork 88
/
detect_face_by_cascade_classifier.php
42 lines (30 loc) · 1.06 KB
/
detect_face_by_cascade_classifier.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
use CV\CascadeClassifier, CV\Scalar;
use function CV\{imread, imwrite, cvtColor, equalizeHist, rectangleByRect};
use const CV\{COLOR_BGR2GRAY};
$src = imread("images/faces.jpg");
$gray = cvtColor($src, COLOR_BGR2GRAY);
// face by lbpcascade_frontalface
$faceClassifier = new CascadeClassifier();
$faceClassifier->load('models/lbpcascades/lbpcascade_frontalface.xml');
$faceClassifier->detectMultiScale($gray, $faces);
//var_export($faces);
if ($faces) {
$scalar = new Scalar(0, 0, 255); //blue
foreach ($faces as $face) {
rectangleByRect($src, $face, $scalar, 3);
}
}
// eyes by haarcascade_eye
/*$eyeClassifier = new CascadeClassifier();
$eyeClassifier->load('models/haarcascades/haarcascade_eye.xml');
$eyes = null;
$eyeClassifier->detectMultiScale($gray, $eyes);
var_export($eyes);
if ($eyes) {
$scalar = new Scalar(0, 0, 255); //red
foreach ($eyes as $eye) {
rectangle($src, $eye->x, $eye->y, $eye->x + $eye->width, $eye->y + $eye->height, $scalar, 2);
}
}*/
imwrite("results/_detect_face_by_cascade_classifier.jpg", $src);