objectdetect 0.0.2 → 0.0.3
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.
- data/ext/objectdetect.c +20 -11
- data/lib/objectdetect/version.rb +1 -1
- metadata +2 -2
data/ext/objectdetect.c
CHANGED
@@ -9,13 +9,18 @@
|
|
9
9
|
|
10
10
|
/*
|
11
11
|
call-seq:
|
12
|
-
ObjectDetect::detect(model_path, target_path) -> [[x,y,width,height]]
|
12
|
+
ObjectDetect::detect(model_path, target_path, rescale_size=nil) -> [[x,y,width,height]]
|
13
13
|
|
14
14
|
Detects objects in the image file +target_path+.
|
15
15
|
+model_path+ needs to point a model file (e.g. /usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml).
|
16
|
+
If +rescale_size+ is specified and the width or height of the image is larger than +rescale_size+,
|
17
|
+
the image is rescaled to fit into the size before processing.
|
16
18
|
*/
|
17
|
-
static VALUE rb_detect(
|
19
|
+
static VALUE rb_detect(int argc, VALUE *argv, VALUE self)
|
18
20
|
{
|
21
|
+
VALUE model_path, target_path, rescale_size;
|
22
|
+
rb_scan_args(argc, argv, "21", &model_path, &target_path, &rescale_size);
|
23
|
+
|
19
24
|
Check_Type(model_path, T_STRING);
|
20
25
|
Check_Type(target_path, T_STRING);
|
21
26
|
|
@@ -27,7 +32,8 @@ static VALUE rb_detect(VALUE self, VALUE model_path, VALUE target_path)
|
|
27
32
|
|
28
33
|
/* load the target picture */
|
29
34
|
IplImage *img = cvLoadImage(RSTRING(target_path)->ptr, 1);
|
30
|
-
if( img
|
35
|
+
if( !img ) {
|
36
|
+
cvReleaseHaarClassifierCascade(&cascade);
|
31
37
|
rb_raise(rb_eArgError, "Can't load the image file");
|
32
38
|
}
|
33
39
|
|
@@ -37,13 +43,16 @@ static VALUE rb_detect(VALUE self, VALUE model_path, VALUE target_path)
|
|
37
43
|
cvEqualizeHist(gray, gray);
|
38
44
|
|
39
45
|
/* rescale */
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
scale =
|
46
|
+
double scale = 1;
|
47
|
+
if(argc == 3 || rescale_size != Qnil) {
|
48
|
+
double limit = (double)NUM2INT(rescale_size);
|
49
|
+
double scale_w, scale_h;
|
50
|
+
scale_w = (double)img->width/limit;
|
51
|
+
scale_h = (double)img->height/limit;
|
52
|
+
scale = (scale_w>scale_h) ? scale_w : scale_h;
|
53
|
+
if(scale < 1)
|
54
|
+
scale = 1;
|
55
|
+
}
|
47
56
|
IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),
|
48
57
|
cvRound (img->height/scale)),
|
49
58
|
8, 1 );
|
@@ -81,5 +90,5 @@ void Init_objectdetect()
|
|
81
90
|
{
|
82
91
|
VALUE module;
|
83
92
|
module = rb_define_module("ObjectDetect");
|
84
|
-
rb_define_module_function(module, "detect", rb_detect,
|
93
|
+
rb_define_module_function(module, "detect", rb_detect, -1);
|
85
94
|
}
|
data/lib/objectdetect/version.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.1
|
|
3
3
|
specification_version: 1
|
4
4
|
name: objectdetect
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-03-
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2007-03-16 00:00:00 +09:00
|
8
8
|
summary: A simple library for detecting objects in pictures.
|
9
9
|
require_paths:
|
10
10
|
- lib
|