findaface 0.0.3 → 0.0.4
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/.gitignore +1 -0
- data/README.md +36 -9
- data/ext/findaface/findaface.cc +4 -3
- data/findaface.gemspec +1 -1
- data/lib/findaface.rb +1 -1
- data/lib/findaface/version.rb +1 -1
- data/spec/findaface_spec.rb +0 -6
- metadata +4 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09569130164ec8180f6c898dc045d26c98696114
|
4
|
+
data.tar.gz: 5f286cd6676782c964308633cc322158e1df3ab1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b6f26b1ba2d546196106a36a7f6ca3f727404e38a5f599baf6805f23b0de3d34f7517c4343132ed4b3329fcb205f64e2299065e12b0835e501bd49266913824
|
7
|
+
data.tar.gz: 81f60e0155dcc46af521e34a0dd386967feeace95627c49969bf61262c648a4cc227e85f54f28d7e817eb14f99447645f63c856e617f8a8a56d8ba34b33a4e55
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,26 +1,53 @@
|
|
1
1
|
# Findaface
|
2
2
|
|
3
3
|
When given a path to a picture, this gem attempts to determins whether it contains
|
4
|
-
|
4
|
+
faces and thus might be appropriate for a profile image. It is looking for faces bigger than 80 pixels squared.
|
5
5
|
|
6
|
-
It is a modified then gemified version of George Ogata's [find-face](https://github.com/howaboutwe/find-face).
|
6
|
+
It is a modified then gemified version of George Ogata's [find-face](https://github.com/howaboutwe/find-face). If you want a CLI that indicates where the biggest face in an image is, then use the original.
|
7
7
|
|
8
|
-
|
9
|
-
If you want a ruby gem that indicates whether an image contains a single face, use this.
|
8
|
+
This gem simply compiles an executable to detect a face then calls it externally, so you won't have to include the humongous OpenCV library into your Ruby process, which can cause memory leak / bloat or even crash. This is what [Paperclip](https://github.com/thoughtbot/paperclip) does for ImageMagick. We also support [posix-spawn](https://github.com/rtomayko/posix-spawn) to mitigate the overhead of fork-exec.
|
10
9
|
|
11
10
|
## Installation
|
12
11
|
|
13
|
-
|
12
|
+
There are two steps:
|
13
|
+
|
14
|
+
1. Install OpenCV
|
15
|
+
2. Install Findaface
|
16
|
+
|
17
|
+
### Install OpenCV
|
18
|
+
|
19
|
+
For Mac:
|
14
20
|
|
15
|
-
|
21
|
+
```sh
|
22
|
+
brew tap homebrew/science
|
23
|
+
brew install opencv
|
24
|
+
```
|
25
|
+
|
26
|
+
For Linux (Debian/Ubuntu):
|
16
27
|
|
17
|
-
|
28
|
+
```sh
|
29
|
+
apt-get install libopencv-dev
|
30
|
+
```
|
18
31
|
|
19
|
-
|
32
|
+
Linux servers don't have a camera, so you might want to fake the device to suppress the warning:
|
33
|
+
|
34
|
+
```sh
|
35
|
+
touch /dev/raw1394
|
36
|
+
```
|
37
|
+
|
38
|
+
### Install Findaface
|
39
|
+
|
40
|
+
Add this line to your application's Gemfile:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
gem 'findaface'
|
44
|
+
```
|
20
45
|
|
21
46
|
Or install it yourself as:
|
22
47
|
|
23
|
-
|
48
|
+
```sh
|
49
|
+
$ gem install findaface
|
50
|
+
```
|
24
51
|
|
25
52
|
## Usage
|
26
53
|
|
data/ext/findaface/findaface.cc
CHANGED
@@ -71,11 +71,12 @@ int main(int argc, const char** argv)
|
|
71
71
|
|
72
72
|
// This parameter will affect the quality of the detected faces. Higher value results in less
|
73
73
|
// detections but with higher quality. 3~6 is a good value for it.
|
74
|
-
int fussyness =
|
75
|
-
cascade.detectMultiScale(small_image, faces, 1.05, fussyness, 0, Size(
|
74
|
+
int fussyness = 2;
|
75
|
+
cascade.detectMultiScale(small_image, faces, 1.05, fussyness, 0, Size(80, 80));
|
76
76
|
|
77
77
|
std::cout << faces.size() << "\tface(s) found\n";
|
78
|
-
|
78
|
+
|
79
|
+
if(faces.size() >= 1) {
|
79
80
|
return 0;
|
80
81
|
} else {
|
81
82
|
return 1;
|
data/findaface.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Andrew Nagi"]
|
10
10
|
spec.email = ["andrew.nagi@gmail.com"]
|
11
11
|
spec.summary = %q{Finds a face in an image.}
|
12
|
-
spec.description = %q{This gem attempts to discern whether an image contains
|
12
|
+
spec.description = %q{This gem attempts to discern whether an image contains any faces. Depends on OpenCV.}
|
13
13
|
spec.homepage = ""
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
data/lib/findaface.rb
CHANGED
@@ -4,7 +4,7 @@ require 'posix/spawn'
|
|
4
4
|
module Findaface
|
5
5
|
LIB_PATH = File.dirname(File.expand_path(__FILE__))
|
6
6
|
EXECUTABLE = File.join(LIB_PATH, '../ext/findaface/findaface')
|
7
|
-
DEFAULT_CASCADE = File.join(LIB_PATH, 'haarcascades/
|
7
|
+
DEFAULT_CASCADE = File.join(LIB_PATH, 'haarcascades/haarcascade_frontalface_alt2.xml')
|
8
8
|
|
9
9
|
def self.has_face?(path)
|
10
10
|
raise "#{path} file does not exist" unless File.exists?(path)
|
data/lib/findaface/version.rb
CHANGED
data/spec/findaface_spec.rb
CHANGED
@@ -14,12 +14,6 @@ describe Findaface, "has_face?" do
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
it "returns false for group photos" do
|
18
|
-
Dir['spec/test_photos/many_faces/*'].each do |path|
|
19
|
-
Findaface.has_face?(path).should be_false
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
17
|
it "returns false for photos with small faces" do
|
24
18
|
Dir['spec/test_photos/small_faces/*'].each do |path|
|
25
19
|
Findaface.has_face?(path).should be_false if path == 'spec/test_photos/small_faces/small.jpg'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: findaface
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Nagi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: posix-spawn
|
@@ -122,8 +122,8 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
-
description: This gem attempts to discern whether an image contains
|
126
|
-
|
125
|
+
description: This gem attempts to discern whether an image contains any faces. Depends
|
126
|
+
on OpenCV.
|
127
127
|
email:
|
128
128
|
- andrew.nagi@gmail.com
|
129
129
|
executables: []
|
@@ -168,10 +168,8 @@ files:
|
|
168
168
|
- spec/findaface_spec.rb
|
169
169
|
- spec/test_photos/has_face/.gitkeep
|
170
170
|
- spec/test_photos/has_face/face.jpg
|
171
|
-
- spec/test_photos/many_faces/family.jpg
|
172
171
|
- spec/test_photos/no_face/.gitkeep
|
173
172
|
- spec/test_photos/no_face/fruit.jpg
|
174
|
-
- spec/test_photos/no_face/garden.jpg
|
175
173
|
- spec/test_photos/small_faces/beach.jpg
|
176
174
|
homepage: ''
|
177
175
|
licenses:
|
@@ -201,9 +199,7 @@ test_files:
|
|
201
199
|
- spec/findaface_spec.rb
|
202
200
|
- spec/test_photos/has_face/.gitkeep
|
203
201
|
- spec/test_photos/has_face/face.jpg
|
204
|
-
- spec/test_photos/many_faces/family.jpg
|
205
202
|
- spec/test_photos/no_face/.gitkeep
|
206
203
|
- spec/test_photos/no_face/fruit.jpg
|
207
|
-
- spec/test_photos/no_face/garden.jpg
|
208
204
|
- spec/test_photos/small_faces/beach.jpg
|
209
205
|
has_rdoc:
|