findaface 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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