findaface 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/ext/findaface/findaface.cc +15 -2
- data/lib/findaface.rb +2 -0
- data/lib/findaface/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 078e59a9d21bbb4aa72fc81bee801b69019bda64
|
4
|
+
data.tar.gz: 54ed12825955454be42fb02732374bd57f623edb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf0b6163665258ddd0da8c272075f8893d0ce4f0479c788ae885ab18550c4fb47df67aae52abc0048417b946c27027957de921dd43a7a3ab56e64b7feeded4cf
|
7
|
+
data.tar.gz: 49220350b083ec128c7e813e4a9d0be6fae629a6839792acc9c76f9ffb5948a27b0625cd6e264b922af73caa752dc8818cef8924a89899fe0f7c451e2f0d9140
|
data/README.md
CHANGED
@@ -70,6 +70,7 @@ Findaface.add_cascade(
|
|
70
70
|
fussyness:7,
|
71
71
|
scale_factor: 1.05,
|
72
72
|
min_size: 100,
|
73
|
+
max_size: 512,
|
73
74
|
}
|
74
75
|
)
|
75
76
|
```
|
@@ -80,6 +81,7 @@ Findaface.add_cascade(
|
|
80
81
|
Basically the scale factor is used to create your scale pyramid. More explanation can be found
|
81
82
|
[here](https://sites.google.com/site/5kk73gpu2012/assignment/viola-jones-face-detection#TOC-Image-Pyramid).
|
82
83
|
* min_size: In pixels. Objects smaller than this size squared are ignored.
|
84
|
+
* max_size: Objects bigger than this are ignored.
|
83
85
|
|
84
86
|
### Using multiple cascades
|
85
87
|
If you add multiple cascades then they will be applied in turn. If any of the cascades matche,
|
@@ -91,6 +93,7 @@ Findaface.add_cascade(
|
|
91
93
|
fussyness:6,
|
92
94
|
scale_factor: 1.05,
|
93
95
|
min_size: 100,
|
96
|
+
max_size: 512,
|
94
97
|
}
|
95
98
|
)
|
96
99
|
Findaface.add_cascade(
|
@@ -99,6 +102,7 @@ Findaface.add_cascade(
|
|
99
102
|
fussyness:6,
|
100
103
|
scale_factor: 1.05,
|
101
104
|
min_size: 100,
|
105
|
+
max_size: 512,
|
102
106
|
}
|
103
107
|
)
|
104
108
|
|
data/ext/findaface/findaface.cc
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
using namespace cv;
|
11
11
|
|
12
|
-
#define USAGE "USAGE: findaface --cascade=PATH.xml [--fussyness=integer] [--scale_factor=1.05] [--min_size=pixels] [ --resize=SCALE ] IMAGE"
|
12
|
+
#define USAGE "USAGE: findaface --cascade=PATH.xml [--fussyness=integer] [--scale_factor=1.05] [--min_size=pixels] [--max-size=pixels] [ --resize=SCALE ] IMAGE"
|
13
13
|
|
14
14
|
int main(int argc, const char** argv)
|
15
15
|
{
|
@@ -24,6 +24,8 @@ int main(int argc, const char** argv)
|
|
24
24
|
std::string scale_factor;
|
25
25
|
// The minimum size (in pixels) of a detected feature. High values speed up detection
|
26
26
|
std::string min_size;
|
27
|
+
// The maximum size (in pixels) of a detected feature.
|
28
|
+
std::string max_size;
|
27
29
|
// Path to image
|
28
30
|
std::string input_name;
|
29
31
|
|
@@ -31,6 +33,7 @@ int main(int argc, const char** argv)
|
|
31
33
|
double scale_factor_number = 1.05;
|
32
34
|
double resize_number = 1;
|
33
35
|
int min_size_number = 80;
|
36
|
+
int max_size_number = 2048;
|
34
37
|
|
35
38
|
CascadeClassifier cascade;
|
36
39
|
|
@@ -39,6 +42,7 @@ int main(int argc, const char** argv)
|
|
39
42
|
const std::string fussyness_opt = "--fussyness=";
|
40
43
|
const std::string scale_factor_opt = "--scale_factor=";
|
41
44
|
const std::string min_size_opt = "--min_size=";
|
45
|
+
const std::string max_size_opt = "--max_size=";
|
42
46
|
const std::string cascade_opt = "--cascade=";
|
43
47
|
|
44
48
|
for (int i = 1; i < argc; i++) {
|
@@ -57,6 +61,9 @@ int main(int argc, const char** argv)
|
|
57
61
|
} else if (min_size_opt.compare(0, min_size_opt.length(), argv[i], min_size_opt.length()) == 0) {
|
58
62
|
min_size.assign(argv[i] + min_size_opt.length());
|
59
63
|
min_size_number = atoi(min_size.c_str());
|
64
|
+
} else if (max_size_opt.compare(0, max_size_opt.length(), argv[i], max_size_opt.length()) == 0) {
|
65
|
+
max_size.assign(argv[i] + max_size_opt.length());
|
66
|
+
max_size_number = atoi(max_size.c_str());
|
60
67
|
} else if (help_opt == argv[i]) {
|
61
68
|
std::cout << USAGE << std::endl;
|
62
69
|
return 0;
|
@@ -90,6 +97,11 @@ int main(int argc, const char** argv)
|
|
90
97
|
return -1;
|
91
98
|
}
|
92
99
|
|
100
|
+
if (max_size_number < 0 || max_size_number <= min_size_number) {
|
101
|
+
std::cerr << "ERROR: max_size must be positive integer bigger than min_size" << std::endl;
|
102
|
+
return -1;
|
103
|
+
}
|
104
|
+
|
93
105
|
if (scale_factor_number <= 1 || scale_factor_number >= 1.5) {
|
94
106
|
std::cerr << "ERROR: scale_factor should be around 1.05 (5%)" << std::endl;
|
95
107
|
return -1;
|
@@ -110,7 +122,8 @@ int main(int argc, const char** argv)
|
|
110
122
|
|
111
123
|
std::vector<Rect> faces;
|
112
124
|
|
113
|
-
cascade.detectMultiScale(small_image, faces, scale_factor_number, fussyness_number, 0,
|
125
|
+
cascade.detectMultiScale(small_image, faces, scale_factor_number, fussyness_number, 0,
|
126
|
+
Size(min_size_number, min_size_number), Size(max_size_number, max_size_number));
|
114
127
|
|
115
128
|
std::cout << faces.size() << "\tface(s) found\n";
|
116
129
|
if(faces.size() >= 1) {
|
data/lib/findaface.rb
CHANGED
@@ -7,6 +7,7 @@ module Findaface
|
|
7
7
|
DEFAULT_CASCADE = {
|
8
8
|
cascade:'haarcascades/haarcascade_frontalface_alt2.xml',
|
9
9
|
fussyness:4,
|
10
|
+
max_size: 512,
|
10
11
|
min_size: 80,
|
11
12
|
scale_factor: 1.05,
|
12
13
|
}
|
@@ -38,6 +39,7 @@ module Findaface
|
|
38
39
|
"--fussyness=#{options[:fussyness]} " +
|
39
40
|
"--scale_factor=#{options[:scale_factor]} " +
|
40
41
|
"--min_size=#{options[:min_size]} " +
|
42
|
+
"--max_size=#{options[:max_size]} " +
|
41
43
|
"#{path} > /dev/null 2>&1"
|
42
44
|
end
|
43
45
|
|
data/lib/findaface/version.rb
CHANGED