findaface 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|