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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a9933fdbcf06f0b992964f5b45656ab1023e484
4
- data.tar.gz: c97d9dd08c823a020b9d978dedbe4531740e0fd5
3
+ metadata.gz: 078e59a9d21bbb4aa72fc81bee801b69019bda64
4
+ data.tar.gz: 54ed12825955454be42fb02732374bd57f623edb
5
5
  SHA512:
6
- metadata.gz: cee519454f51e091cefc4400cf1f97483a57a8f96fcdfc76c1b7e5421c66ce28aab9c593809078cca126a47d038641dd2a1ac027d28e2a4133c430fa6777c3f9
7
- data.tar.gz: 376166d82e91e85b0fede00c78c5184d6f1d7774710b79c67c386adc180326b78a75a88a719d6ade2ca281fd76f5a4c0d39530857cef757367e96d72fad0f103
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
 
@@ -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, Size(min_size_number, min_size_number));
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
 
@@ -1,3 +1,3 @@
1
1
  module Findaface
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: findaface
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Nagi