Skip to content

Commit 33a13fc

Browse files
committed
initial commit
0 parents  commit 33a13fc

32 files changed

+1077467
-0
lines changed

Diff for: detect_face_by_cascade_classifier.php

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

Diff for: detect_face_by_dnn_ssd.php

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
use CV\Scalar, CV\Size;
4+
use function CV\{imread, imwrite, cvtColor, equalizeHist, rectangle};
5+
use const CV\{COLOR_BGR2GRAY};
6+
7+
8+
$src = imread("images/faces.jpg");
9+
$gray = cvtColor($src, COLOR_BGR2GRAY);
10+
equalizeHist($gray, $gray);
11+
12+
\CV\resize($src, $resised, new Size(300, 300));
13+
14+
$blob = \CV\DNN\Net::blobFromImage($resised, 1, new Size(300, 300), new Scalar(104, 177, 123));
15+
16+
$net = \CV\DNN\Net::readNetFromCaffe('models/ssd/res10_300x300_ssd_deploy.prototxt', 'models/ssd/res10_300x300_ssd_iter_140000.caffemodel');
17+
18+
$net->setInput($blob, "");
19+
20+
$r = $net->forward();
21+
22+
$scalar = new Scalar(0, 0, 255);
23+
for ($i = 0; $i < $r->shape[2]; $i++) {
24+
$confidence = $r->atIdx([0,0,$i,2], 1);
25+
//var_export($confidence);echo "\n";
26+
if ($confidence > 0.5) {
27+
rectangle($src, $r->atIdx([0,0,$i,3], 1)*$src->cols, $r->atIdx([0,0,$i,4], 1)*$src->rows, $r->atIdx([0,0,$i,5], 1)*$src->cols, $r->atIdx([0,0,$i,6], 1)*$src->rows, $scalar, 3);
28+
}
29+
}
30+
31+
32+
$data = [];
33+
34+
imwrite("results/_detect_face_by_dnn.jpg", $src);

Diff for: detect_facemarks_by_lbf.php

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
use CV\CascadeClassifier, CV\Face\FacemarkLBF;
4+
use function CV\{circle, imread, imwrite, cvtColor, equalizeHist};
5+
use CV\Scalar;
6+
use const CV\{COLOR_BGR2GRAY};
7+
8+
$src = imread("images/faces.jpg");
9+
$gray = cvtColor($src, COLOR_BGR2GRAY);
10+
equalizeHist($gray, $gray);
11+
12+
// face by lbpcascade_frontalface
13+
$faceClassifier = new CascadeClassifier();
14+
$faceClassifier->load('models/lbpcascades/lbpcascade_frontalface.xml');
15+
$faces = null;
16+
$faceClassifier->detectMultiScale($gray, $faces);
17+
//var_export($faces);
18+
19+
$facemark = FacemarkLBF::create();
20+
$facemark->loadModel('models/opencv-facemark-lbf/lbfmodel.yaml');
21+
22+
$facemark->fit($src, $faces, $landmarks);
23+
//var_export($landmarks);
24+
if ($landmarks) {
25+
$scalar = new Scalar(0, 0, 255);
26+
foreach ($landmarks as $face) {
27+
foreach($face as $k => $point) {//var_export($point);
28+
circle($src, $point, 2, $scalar, 2);
29+
}
30+
}
31+
}
32+
33+
34+
imwrite("results/_detect_facemarks_by_lbf.jpg", $src);

Diff for: images/1.jpg

40.4 KB
Loading

Diff for: images/2.jpg

28.1 KB
Loading

Diff for: images/3.jpg

17.2 KB
Loading

Diff for: images/4.jpg

48.5 KB
Loading

Diff for: images/5.jpg

28.4 KB
Loading

Diff for: images/faces.jpg

175 KB
Loading

0 commit comments

Comments
 (0)