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 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