bonanza-ruby-opencv 0.0.13.20140330211753
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 +7 -0
- data/.gitignore +28 -0
- data/.yardopts +3 -0
- data/DEVELOPERS_NOTE.md +137 -0
- data/Gemfile +9 -0
- data/History.txt +5 -0
- data/License.txt +30 -0
- data/Manifest.txt +239 -0
- data/README.md +98 -0
- data/Rakefile +99 -0
- data/config.yml +7 -0
- data/examples/alpha_blend.rb +21 -0
- data/examples/contours/bitmap-contours-with-labels.png +0 -0
- data/examples/contours/bitmap-contours.png +0 -0
- data/examples/contours/bounding-box-detect-canny.rb +62 -0
- data/examples/contours/contour_retrieval_modes.rb +139 -0
- data/examples/contours/rotated-boxes.jpg +0 -0
- data/examples/convexhull.rb +47 -0
- data/examples/face_detect.rb +20 -0
- data/examples/facerec/create_csv.rb +43 -0
- data/examples/facerec/facerec_eigenfaces.rb +132 -0
- data/examples/facerec/facerec_fisherfaces.rb +131 -0
- data/examples/facerec/facerec_lbph.rb +116 -0
- data/examples/facerec/readme.md +111 -0
- data/examples/find_obj.rb +169 -0
- data/examples/houghcircle.rb +22 -0
- data/examples/images/box.png +0 -0
- data/examples/images/box_in_scene.png +0 -0
- data/examples/images/inpaint.png +0 -0
- data/examples/images/lena-256x256.jpg +0 -0
- data/examples/images/lena-eyes.jpg +0 -0
- data/examples/images/lenna-rotated.jpg +0 -0
- data/examples/images/lenna.jpg +0 -0
- data/examples/images/stuff.jpg +0 -0
- data/examples/images/tiffany.jpg +0 -0
- data/examples/inpaint.rb +57 -0
- data/examples/match_kdtree.rb +88 -0
- data/examples/match_template.rb +26 -0
- data/examples/paint.rb +70 -0
- data/examples/snake.rb +43 -0
- data/ext/opencv/algorithm.cpp +291 -0
- data/ext/opencv/algorithm.h +38 -0
- data/ext/opencv/curve.cpp +127 -0
- data/ext/opencv/curve.h +34 -0
- data/ext/opencv/cvavgcomp.cpp +64 -0
- data/ext/opencv/cvavgcomp.h +39 -0
- data/ext/opencv/cvbox2d.cpp +195 -0
- data/ext/opencv/cvbox2d.h +61 -0
- data/ext/opencv/cvcapture.cpp +607 -0
- data/ext/opencv/cvcapture.h +72 -0
- data/ext/opencv/cvchain.cpp +233 -0
- data/ext/opencv/cvchain.h +46 -0
- data/ext/opencv/cvcircle32f.cpp +126 -0
- data/ext/opencv/cvcircle32f.h +52 -0
- data/ext/opencv/cvconnectedcomp.cpp +156 -0
- data/ext/opencv/cvconnectedcomp.h +49 -0
- data/ext/opencv/cvcontour.cpp +332 -0
- data/ext/opencv/cvcontour.h +48 -0
- data/ext/opencv/cvcontourtree.cpp +96 -0
- data/ext/opencv/cvcontourtree.h +41 -0
- data/ext/opencv/cvconvexitydefect.cpp +92 -0
- data/ext/opencv/cvconvexitydefect.h +42 -0
- data/ext/opencv/cverror.cpp +115 -0
- data/ext/opencv/cverror.h +28 -0
- data/ext/opencv/cvfeaturetree.cpp +123 -0
- data/ext/opencv/cvfeaturetree.h +55 -0
- data/ext/opencv/cvfont.cpp +228 -0
- data/ext/opencv/cvfont.h +64 -0
- data/ext/opencv/cvhaarclassifiercascade.cpp +148 -0
- data/ext/opencv/cvhaarclassifiercascade.h +39 -0
- data/ext/opencv/cvhistogram.cpp +715 -0
- data/ext/opencv/cvhistogram.h +73 -0
- data/ext/opencv/cvhumoments.cpp +178 -0
- data/ext/opencv/cvhumoments.h +51 -0
- data/ext/opencv/cvline.cpp +159 -0
- data/ext/opencv/cvline.h +54 -0
- data/ext/opencv/cvmat.cpp +6829 -0
- data/ext/opencv/cvmat.h +323 -0
- data/ext/opencv/cvmemstorage.cpp +73 -0
- data/ext/opencv/cvmemstorage.h +53 -0
- data/ext/opencv/cvmoments.cpp +293 -0
- data/ext/opencv/cvmoments.h +75 -0
- data/ext/opencv/cvpoint.cpp +265 -0
- data/ext/opencv/cvpoint.h +67 -0
- data/ext/opencv/cvpoint2d32f.cpp +216 -0
- data/ext/opencv/cvpoint2d32f.h +63 -0
- data/ext/opencv/cvpoint3d32f.cpp +252 -0
- data/ext/opencv/cvpoint3d32f.h +66 -0
- data/ext/opencv/cvrect.cpp +441 -0
- data/ext/opencv/cvrect.h +88 -0
- data/ext/opencv/cvscalar.cpp +301 -0
- data/ext/opencv/cvscalar.h +76 -0
- data/ext/opencv/cvseq.cpp +605 -0
- data/ext/opencv/cvseq.h +74 -0
- data/ext/opencv/cvsize.cpp +227 -0
- data/ext/opencv/cvsize.h +65 -0
- data/ext/opencv/cvsize2d32f.cpp +215 -0
- data/ext/opencv/cvsize2d32f.h +64 -0
- data/ext/opencv/cvslice.cpp +126 -0
- data/ext/opencv/cvslice.h +61 -0
- data/ext/opencv/cvsurfparams.cpp +208 -0
- data/ext/opencv/cvsurfparams.h +58 -0
- data/ext/opencv/cvsurfpoint.cpp +279 -0
- data/ext/opencv/cvsurfpoint.h +54 -0
- data/ext/opencv/cvtermcriteria.cpp +198 -0
- data/ext/opencv/cvtermcriteria.h +71 -0
- data/ext/opencv/cvtwopoints.cpp +122 -0
- data/ext/opencv/cvtwopoints.h +51 -0
- data/ext/opencv/cvutils.cpp +221 -0
- data/ext/opencv/cvutils.h +31 -0
- data/ext/opencv/cvvideowriter.cpp +142 -0
- data/ext/opencv/cvvideowriter.h +43 -0
- data/ext/opencv/eigenfaces.cpp +75 -0
- data/ext/opencv/eigenfaces.h +30 -0
- data/ext/opencv/extconf.rb +82 -0
- data/ext/opencv/facerecognizer.cpp +181 -0
- data/ext/opencv/facerecognizer.h +46 -0
- data/ext/opencv/fisherfaces.cpp +75 -0
- data/ext/opencv/fisherfaces.h +30 -0
- data/ext/opencv/gui.cpp +71 -0
- data/ext/opencv/gui.h +30 -0
- data/ext/opencv/iplconvkernel.cpp +198 -0
- data/ext/opencv/iplconvkernel.h +71 -0
- data/ext/opencv/iplimage.cpp +666 -0
- data/ext/opencv/iplimage.h +75 -0
- data/ext/opencv/lbph.cpp +78 -0
- data/ext/opencv/lbph.h +30 -0
- data/ext/opencv/mouseevent.cpp +186 -0
- data/ext/opencv/mouseevent.h +56 -0
- data/ext/opencv/opencv.cpp +833 -0
- data/ext/opencv/opencv.h +405 -0
- data/ext/opencv/pointset.cpp +280 -0
- data/ext/opencv/pointset.h +68 -0
- data/ext/opencv/trackbar.cpp +127 -0
- data/ext/opencv/trackbar.h +69 -0
- data/ext/opencv/window.cpp +377 -0
- data/ext/opencv/window.h +66 -0
- data/images/CvMat_sobel.png +0 -0
- data/images/CvMat_sub_rect.png +0 -0
- data/images/CvSeq_relationmap.png +0 -0
- data/lib/opencv.rb +12 -0
- data/lib/opencv/psyched_yaml.rb +22 -0
- data/lib/opencv/version.rb +4 -0
- data/test/eigenfaces_save.xml +7524 -0
- data/test/fisherfaces_save.xml +7530 -0
- data/test/helper.rb +166 -0
- data/test/lbph_save.xml +4304 -0
- data/test/runner.rb +30 -0
- data/test/samples/airplane.jpg +0 -0
- data/test/samples/baboon.jpg +0 -0
- data/test/samples/baboon200.jpg +0 -0
- data/test/samples/baboon200_rotated.jpg +0 -0
- data/test/samples/blank0.jpg +0 -0
- data/test/samples/blank1.jpg +0 -0
- data/test/samples/blank2.jpg +0 -0
- data/test/samples/blank3.jpg +0 -0
- data/test/samples/blank4.jpg +0 -0
- data/test/samples/blank5.jpg +0 -0
- data/test/samples/blank6.jpg +0 -0
- data/test/samples/blank7.jpg +0 -0
- data/test/samples/blank8.jpg +0 -0
- data/test/samples/blank9.jpg +0 -0
- data/test/samples/cat.jpg +0 -0
- data/test/samples/chessboard.jpg +0 -0
- data/test/samples/contours.jpg +0 -0
- data/test/samples/fruits.jpg +0 -0
- data/test/samples/haarcascade_frontalface_alt.xml.gz +0 -0
- data/test/samples/inpaint-mask.bmp +0 -0
- data/test/samples/lena-256x256.jpg +0 -0
- data/test/samples/lena-32x32.jpg +0 -0
- data/test/samples/lena-eyes.jpg +0 -0
- data/test/samples/lena-inpaint.jpg +0 -0
- data/test/samples/lena.jpg +0 -0
- data/test/samples/lines.jpg +0 -0
- data/test/samples/messy0.jpg +0 -0
- data/test/samples/messy1.jpg +0 -0
- data/test/samples/movie_sample.avi +0 -0
- data/test/samples/one_way_train_0000.jpg +0 -0
- data/test/samples/one_way_train_0001.jpg +0 -0
- data/test/samples/partially_blank0.jpg +0 -0
- data/test/samples/partially_blank1.jpg +0 -0
- data/test/samples/smooth0.jpg +0 -0
- data/test/samples/smooth1.jpg +0 -0
- data/test/samples/smooth2.jpg +0 -0
- data/test/samples/smooth3.jpg +0 -0
- data/test/samples/smooth4.jpg +0 -0
- data/test/samples/smooth5.jpg +0 -0
- data/test/samples/smooth6.jpg +0 -0
- data/test/samples/str-cv-rotated.jpg +0 -0
- data/test/samples/str-cv.jpg +0 -0
- data/test/samples/str-ov.jpg +0 -0
- data/test/samples/stuff.jpg +0 -0
- data/test/test_curve.rb +43 -0
- data/test/test_cvavgcomp.rb +24 -0
- data/test/test_cvbox2d.rb +76 -0
- data/test/test_cvcapture.rb +183 -0
- data/test/test_cvchain.rb +108 -0
- data/test/test_cvcircle32f.rb +41 -0
- data/test/test_cvconnectedcomp.rb +61 -0
- data/test/test_cvcontour.rb +150 -0
- data/test/test_cvcontourtree.rb +43 -0
- data/test/test_cverror.rb +50 -0
- data/test/test_cvfeaturetree.rb +65 -0
- data/test/test_cvfont.rb +58 -0
- data/test/test_cvhaarclassifiercascade.rb +63 -0
- data/test/test_cvhistogram.rb +271 -0
- data/test/test_cvhumoments.rb +83 -0
- data/test/test_cvline.rb +50 -0
- data/test/test_cvmat.rb +3003 -0
- data/test/test_cvmat_drawing.rb +349 -0
- data/test/test_cvmat_dxt.rb +150 -0
- data/test/test_cvmat_imageprocessing.rb +2085 -0
- data/test/test_cvmoments.rb +180 -0
- data/test/test_cvpoint.rb +75 -0
- data/test/test_cvpoint2d32f.rb +75 -0
- data/test/test_cvpoint3d32f.rb +93 -0
- data/test/test_cvrect.rb +144 -0
- data/test/test_cvscalar.rb +113 -0
- data/test/test_cvseq.rb +295 -0
- data/test/test_cvsize.rb +75 -0
- data/test/test_cvsize2d32f.rb +75 -0
- data/test/test_cvslice.rb +31 -0
- data/test/test_cvsurfparams.rb +57 -0
- data/test/test_cvsurfpoint.rb +66 -0
- data/test/test_cvtermcriteria.rb +56 -0
- data/test/test_cvtwopoints.rb +40 -0
- data/test/test_cvvideowriter.rb +58 -0
- data/test/test_eigenfaces.rb +93 -0
- data/test/test_fisherfaces.rb +93 -0
- data/test/test_iplconvkernel.rb +54 -0
- data/test/test_iplimage.rb +232 -0
- data/test/test_lbph.rb +152 -0
- data/test/test_mouseevent.rb +17 -0
- data/test/test_opencv.rb +360 -0
- data/test/test_pointset.rb +128 -0
- data/test/test_preliminary.rb +130 -0
- data/test/test_trackbar.rb +47 -0
- data/test/test_window.rb +115 -0
- data/yard_extension.rb +5 -0
- metadata +399 -0
data/ext/opencv/cvseq.h
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvseq.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_CVSEQ_H
|
11
|
+
#define RUBY_OPENCV_CVSEQ_H
|
12
|
+
|
13
|
+
#include "opencv.h"
|
14
|
+
|
15
|
+
#define __NAMESPACE_BEGIN_CVSEQ namespace cCvSeq {
|
16
|
+
#define __NAMESPACE_END_CVSEQ }
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_CVSEQ
|
20
|
+
|
21
|
+
VALUE rb_class();
|
22
|
+
void init_ruby_class();
|
23
|
+
|
24
|
+
VALUE seqblock_class(void *ptr);
|
25
|
+
void register_elem_class(CvSeq *seq, VALUE klass);
|
26
|
+
void unregister_elem_class(void *ptr);
|
27
|
+
|
28
|
+
VALUE rb_allocate(VALUE klass);
|
29
|
+
|
30
|
+
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
31
|
+
VALUE rb_total(VALUE self);
|
32
|
+
VALUE rb_empty_q(VALUE self);
|
33
|
+
VALUE rb_aref(VALUE self, VALUE index);
|
34
|
+
VALUE rb_first(VALUE self);
|
35
|
+
VALUE rb_last(VALUE self);
|
36
|
+
VALUE rb_h_prev(VALUE self);
|
37
|
+
VALUE rb_h_next(VALUE self);
|
38
|
+
VALUE rb_v_prev(VALUE self);
|
39
|
+
VALUE rb_v_next(VALUE self);
|
40
|
+
VALUE rb_push(VALUE self, VALUE args);
|
41
|
+
VALUE rb_pop(VALUE self);
|
42
|
+
VALUE rb_unshift(VALUE self, VALUE args);
|
43
|
+
VALUE rb_shift(VALUE self);
|
44
|
+
VALUE rb_each(VALUE self);
|
45
|
+
VALUE rb_each_index(VALUE self);
|
46
|
+
VALUE rb_insert(VALUE self, VALUE index, VALUE object);
|
47
|
+
VALUE rb_remove(VALUE self, VALUE index);
|
48
|
+
VALUE rb_clear(VALUE self);
|
49
|
+
|
50
|
+
VALUE new_object(CvSeq *seq, VALUE klass);
|
51
|
+
VALUE new_object(CvSeq *seq, VALUE klass, VALUE storage);
|
52
|
+
VALUE new_sequence(VALUE klass, CvSeq *seq, VALUE element_klass, VALUE storage);
|
53
|
+
|
54
|
+
__NAMESPACE_END_CVSEQ
|
55
|
+
|
56
|
+
inline CvSeq*
|
57
|
+
CVSEQ(VALUE object)
|
58
|
+
{
|
59
|
+
CvSeq *ptr;
|
60
|
+
Data_Get_Struct(object, CvSeq, ptr);
|
61
|
+
return ptr;
|
62
|
+
}
|
63
|
+
|
64
|
+
inline CvSeq*
|
65
|
+
CVSEQ_WITH_CHECK(VALUE object)
|
66
|
+
{
|
67
|
+
if (!rb_obj_is_kind_of(object, cCvSeq::rb_class()))
|
68
|
+
raise_typeerror(object, cCvSeq::rb_class());
|
69
|
+
return CVSEQ(object);
|
70
|
+
}
|
71
|
+
|
72
|
+
__NAMESPACE_END_OPENCV
|
73
|
+
|
74
|
+
#endif // RUBY_OPENCV_CVSEQ_H
|
@@ -0,0 +1,227 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvsize.cpp -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "cvsize.h"
|
11
|
+
/*
|
12
|
+
* Document-class: OpenCV::CvSize
|
13
|
+
*
|
14
|
+
* This class means one size on X axis Y axis.
|
15
|
+
* X and Y takes the value of the Fixnum.
|
16
|
+
*
|
17
|
+
* C structure is here, very simple.
|
18
|
+
* typdef struct CvSize {
|
19
|
+
* int width;
|
20
|
+
* int height;
|
21
|
+
* }
|
22
|
+
*/
|
23
|
+
__NAMESPACE_BEGIN_OPENCV
|
24
|
+
__NAMESPACE_BEGIN_CVSIZE
|
25
|
+
|
26
|
+
VALUE rb_klass;
|
27
|
+
|
28
|
+
VALUE
|
29
|
+
rb_class()
|
30
|
+
{
|
31
|
+
return rb_klass;
|
32
|
+
}
|
33
|
+
|
34
|
+
/*
|
35
|
+
* call-seq:
|
36
|
+
* compatible?(obj)
|
37
|
+
*
|
38
|
+
* Return compatibility to CvSize. Return true if object have method #width and #height.
|
39
|
+
*
|
40
|
+
* For example.
|
41
|
+
* class MySize
|
42
|
+
* def width
|
43
|
+
* 10
|
44
|
+
* end
|
45
|
+
* def height
|
46
|
+
* 20
|
47
|
+
* end
|
48
|
+
* end
|
49
|
+
* mp = MySize.new
|
50
|
+
* CvSize.compatible?(mp) #=> true
|
51
|
+
* CvSize.new(mp) #=> same as CvSize(10, 20)
|
52
|
+
*/
|
53
|
+
VALUE
|
54
|
+
rb_compatible_q(VALUE klass, VALUE object)
|
55
|
+
{
|
56
|
+
return (rb_respond_to(object, rb_intern("width")) && rb_respond_to(object, rb_intern("height"))) ? Qtrue : Qfalse;
|
57
|
+
}
|
58
|
+
|
59
|
+
VALUE
|
60
|
+
rb_allocate(VALUE klass)
|
61
|
+
{
|
62
|
+
CvSize *ptr;
|
63
|
+
return Data_Make_Struct(klass, CvSize, 0, -1, ptr);
|
64
|
+
}
|
65
|
+
|
66
|
+
/*
|
67
|
+
* call-seq:
|
68
|
+
* new
|
69
|
+
* new(obj)
|
70
|
+
* new(width, height)
|
71
|
+
*
|
72
|
+
* Create new size of 2D, (width, height). It is dropped below the decimal point.
|
73
|
+
*
|
74
|
+
* new() is same as new(0, 0)
|
75
|
+
*
|
76
|
+
* new(obj) is same as new(obj.x.to_i, obj.y.to_i)
|
77
|
+
*/
|
78
|
+
VALUE
|
79
|
+
rb_initialize(int argc, VALUE *argv, VALUE self)
|
80
|
+
{
|
81
|
+
CvSize *self_ptr = CVSIZE(self);
|
82
|
+
switch (argc) {
|
83
|
+
case 0:
|
84
|
+
break;
|
85
|
+
case 1: {
|
86
|
+
CvSize size = VALUE_TO_CVSIZE(argv[0]);
|
87
|
+
self_ptr->width = size.width;
|
88
|
+
self_ptr->height = size.height;
|
89
|
+
break;
|
90
|
+
}
|
91
|
+
case 2:
|
92
|
+
self_ptr->width = NUM2INT(argv[0]);
|
93
|
+
self_ptr->height = NUM2INT(argv[1]);
|
94
|
+
break;
|
95
|
+
default:
|
96
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..2)", argc);
|
97
|
+
break;
|
98
|
+
}
|
99
|
+
return self;
|
100
|
+
}
|
101
|
+
|
102
|
+
/*
|
103
|
+
* Return size of x-axis.
|
104
|
+
*/
|
105
|
+
VALUE
|
106
|
+
rb_width(VALUE self)
|
107
|
+
{
|
108
|
+
return INT2NUM(CVSIZE(self)->width);
|
109
|
+
}
|
110
|
+
|
111
|
+
/*
|
112
|
+
* call-seq:
|
113
|
+
* width = val
|
114
|
+
*
|
115
|
+
* Set x-axis size, return self.
|
116
|
+
* It is dropped below the decimal point.
|
117
|
+
*/
|
118
|
+
VALUE
|
119
|
+
rb_set_width(VALUE self, VALUE x)
|
120
|
+
{
|
121
|
+
CVSIZE(self)->width = NUM2INT(x);
|
122
|
+
return self;
|
123
|
+
}
|
124
|
+
|
125
|
+
/*
|
126
|
+
* Return size of yaxis.
|
127
|
+
*/
|
128
|
+
VALUE
|
129
|
+
rb_height(VALUE self)
|
130
|
+
{
|
131
|
+
return INT2NUM(CVSIZE(self)->height);
|
132
|
+
}
|
133
|
+
|
134
|
+
/*
|
135
|
+
* call-seq:
|
136
|
+
* height = val
|
137
|
+
*
|
138
|
+
* Set y-axis size, return self.
|
139
|
+
* It is dropped below the decimal point.
|
140
|
+
*/
|
141
|
+
VALUE
|
142
|
+
rb_set_height(VALUE self, VALUE y)
|
143
|
+
{
|
144
|
+
CVSIZE(self)->height = NUM2INT(y);
|
145
|
+
return self;
|
146
|
+
}
|
147
|
+
|
148
|
+
/*
|
149
|
+
* call-seq:
|
150
|
+
* to_s -> "<OpenCV::CvSize:widthxheight>"
|
151
|
+
*
|
152
|
+
* Return width and height by String.
|
153
|
+
*/
|
154
|
+
VALUE
|
155
|
+
rb_to_s(VALUE self)
|
156
|
+
{
|
157
|
+
const int i = 4;
|
158
|
+
VALUE str[i];
|
159
|
+
str[0] = rb_str_new2("<%s:%dx%d>");
|
160
|
+
str[1] = rb_str_new2(rb_class2name(CLASS_OF(self)));
|
161
|
+
str[2] = rb_width(self);
|
162
|
+
str[3] = rb_height(self);
|
163
|
+
return rb_f_sprintf(i, str);
|
164
|
+
}
|
165
|
+
|
166
|
+
/*
|
167
|
+
* call-seq:
|
168
|
+
* to_ary -> [width, height]
|
169
|
+
*
|
170
|
+
* Return width and height by Array.
|
171
|
+
*/
|
172
|
+
VALUE
|
173
|
+
rb_to_ary(VALUE self)
|
174
|
+
{
|
175
|
+
return rb_ary_new3(2, rb_width(self), rb_height(self));
|
176
|
+
}
|
177
|
+
|
178
|
+
VALUE
|
179
|
+
new_object()
|
180
|
+
{
|
181
|
+
VALUE object = rb_allocate(rb_klass);
|
182
|
+
*CVSIZE(object) = cvSize(0, 0);
|
183
|
+
return object;
|
184
|
+
}
|
185
|
+
|
186
|
+
VALUE
|
187
|
+
new_object(CvSize size)
|
188
|
+
{
|
189
|
+
VALUE object = rb_allocate(rb_klass);
|
190
|
+
*CVSIZE(object) = size;
|
191
|
+
return object;
|
192
|
+
}
|
193
|
+
|
194
|
+
void
|
195
|
+
init_ruby_class()
|
196
|
+
{
|
197
|
+
#if 0
|
198
|
+
// For documentation using YARD
|
199
|
+
VALUE opencv = rb_define_module("OpenCV");
|
200
|
+
#endif
|
201
|
+
|
202
|
+
if (rb_klass)
|
203
|
+
return;
|
204
|
+
/*
|
205
|
+
* opencv = rb_define_module("OpenCV");
|
206
|
+
*
|
207
|
+
* note: this comment is used by rdoc.
|
208
|
+
*/
|
209
|
+
VALUE opencv = rb_module_opencv();
|
210
|
+
|
211
|
+
rb_klass = rb_define_class_under(opencv, "CvSize", rb_cObject);
|
212
|
+
rb_define_alloc_func(rb_klass, rb_allocate);
|
213
|
+
rb_define_singleton_method(rb_klass, "compatible?", RUBY_METHOD_FUNC(rb_compatible_q), 1);
|
214
|
+
rb_define_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
|
215
|
+
rb_define_method(rb_klass, "width", RUBY_METHOD_FUNC(rb_width), 0);
|
216
|
+
rb_define_method(rb_klass, "width=", RUBY_METHOD_FUNC(rb_set_width), 1);
|
217
|
+
rb_define_method(rb_klass, "height", RUBY_METHOD_FUNC(rb_height), 0);
|
218
|
+
rb_define_method(rb_klass, "height=", RUBY_METHOD_FUNC(rb_set_height), 1);
|
219
|
+
|
220
|
+
rb_define_method(rb_klass, "to_s", RUBY_METHOD_FUNC(rb_to_s), 0);
|
221
|
+
rb_define_method(rb_klass, "to_ary", RUBY_METHOD_FUNC(rb_to_ary), 0);
|
222
|
+
rb_define_alias(rb_klass, "to_a", "to_ary");
|
223
|
+
}
|
224
|
+
|
225
|
+
__NAMESPACE_END_CVSIZE
|
226
|
+
__NAMESPACE_END_OPENCV
|
227
|
+
|
data/ext/opencv/cvsize.h
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvsize.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_CVSIZE_H
|
11
|
+
#define RUBY_OPENCV_CVSIZE_H
|
12
|
+
|
13
|
+
#include "opencv.h"
|
14
|
+
|
15
|
+
#define __NAMESPACE_BEGIN_CVSIZE namespace cCvSize {
|
16
|
+
#define __NAMESPACE_END_CVSIZE }
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_CVSIZE
|
20
|
+
|
21
|
+
VALUE rb_class();
|
22
|
+
|
23
|
+
void init_ruby_class();
|
24
|
+
|
25
|
+
VALUE rb_compatible_q(VALUE klass, VALUE object);
|
26
|
+
|
27
|
+
VALUE rb_allocate(VALUE klass);
|
28
|
+
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
29
|
+
VALUE rb_width(VALUE self);
|
30
|
+
VALUE rb_set_width(VALUE self, VALUE width);
|
31
|
+
VALUE rb_height(VALUE self);
|
32
|
+
VALUE rb_set_height(VALUE self, VALUE height);
|
33
|
+
|
34
|
+
VALUE rb_to_s(VALUE self);
|
35
|
+
VALUE rb_to_ary(VALUE self);
|
36
|
+
|
37
|
+
VALUE new_object();
|
38
|
+
VALUE new_object(CvSize size);
|
39
|
+
|
40
|
+
__NAMESPACE_END_CVSIZE
|
41
|
+
|
42
|
+
inline CvSize*
|
43
|
+
CVSIZE(VALUE object)
|
44
|
+
{
|
45
|
+
CvSize *ptr;
|
46
|
+
Data_Get_Struct(object, CvSize, ptr);
|
47
|
+
return ptr;
|
48
|
+
}
|
49
|
+
|
50
|
+
inline CvSize
|
51
|
+
VALUE_TO_CVSIZE(VALUE object)
|
52
|
+
{
|
53
|
+
if (cCvSize::rb_compatible_q(cCvSize::rb_class(), object)) {
|
54
|
+
return cvSize(NUM2INT(rb_funcall(object, rb_intern("width"), 0)),
|
55
|
+
NUM2INT(rb_funcall(object, rb_intern("height"), 0)));
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
raise_compatible_typeerror(object, cCvSize::rb_class());
|
59
|
+
}
|
60
|
+
throw "Should never reach here";
|
61
|
+
}
|
62
|
+
|
63
|
+
__NAMESPACE_END_OPENCV
|
64
|
+
|
65
|
+
#endif // RUBY_OPENCV_CVSIZE_H
|
@@ -0,0 +1,215 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvsize2d32f.cpp -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "cvsize2d32f.h"
|
11
|
+
/*
|
12
|
+
* Document-class: OpenCV::CvSize2D32f
|
13
|
+
*
|
14
|
+
* This class means one size on X axis Y axis.
|
15
|
+
* X and Y takes the value of the Float.
|
16
|
+
*
|
17
|
+
* C structure is here, very simple.
|
18
|
+
* typdef struct CvSize2D32f {
|
19
|
+
* float width;
|
20
|
+
* float height;
|
21
|
+
* } CvSize2D32f;
|
22
|
+
*/
|
23
|
+
__NAMESPACE_BEGIN_OPENCV
|
24
|
+
__NAMESPACE_BEGIN_CVSIZE2D32F
|
25
|
+
|
26
|
+
VALUE rb_klass;
|
27
|
+
|
28
|
+
VALUE
|
29
|
+
rb_class()
|
30
|
+
{
|
31
|
+
return rb_klass;
|
32
|
+
}
|
33
|
+
|
34
|
+
/*
|
35
|
+
* call-seq:
|
36
|
+
* compatible?(obj)
|
37
|
+
*
|
38
|
+
* Return compatibility to CvSize2D32f. Return true if object have method #width and #height.
|
39
|
+
*
|
40
|
+
* For example.
|
41
|
+
* class MySize
|
42
|
+
* def width
|
43
|
+
* 10.1
|
44
|
+
* end
|
45
|
+
* def height
|
46
|
+
* 20.2
|
47
|
+
* end
|
48
|
+
* end
|
49
|
+
* mp = MySize.new
|
50
|
+
* CvSize2D32f.compatible?(mp) #=> true
|
51
|
+
* CvSize2D32f.new(mp) #=> same as CvSize2D32f.new(10.1, 20.2)
|
52
|
+
*/
|
53
|
+
VALUE
|
54
|
+
rb_compatible_q(VALUE klass, VALUE object)
|
55
|
+
{
|
56
|
+
return (rb_respond_to(object, rb_intern("width")) && rb_respond_to(object, rb_intern("height"))) ? Qtrue : Qfalse;
|
57
|
+
}
|
58
|
+
|
59
|
+
VALUE
|
60
|
+
rb_allocate(VALUE klass)
|
61
|
+
{
|
62
|
+
CvSize2D32f *ptr;
|
63
|
+
return Data_Make_Struct(klass, CvSize2D32f, 0, -1, ptr);
|
64
|
+
}
|
65
|
+
|
66
|
+
/*
|
67
|
+
* call-seq:
|
68
|
+
* new
|
69
|
+
* new(obj)
|
70
|
+
* new(width, height)
|
71
|
+
*
|
72
|
+
* Create new size of 2D, (width, height).
|
73
|
+
*
|
74
|
+
* new() is same as new(0.0, 0.0)
|
75
|
+
*
|
76
|
+
* new(obj) is same as new(obj.x.to_f, obj.y.to_f)
|
77
|
+
*/
|
78
|
+
VALUE
|
79
|
+
rb_initialize(int argc, VALUE *argv, VALUE self)
|
80
|
+
{
|
81
|
+
CvSize2D32f *self_ptr = CVSIZE2D32F(self);
|
82
|
+
switch(argc){
|
83
|
+
case 0:
|
84
|
+
break;
|
85
|
+
case 1: {
|
86
|
+
CvSize2D32f size = VALUE_TO_CVSIZE2D32F(argv[0]);
|
87
|
+
self_ptr->width = size.width;
|
88
|
+
self_ptr->height = size.height;
|
89
|
+
break;
|
90
|
+
}
|
91
|
+
case 2:
|
92
|
+
self_ptr->width = NUM2DBL(argv[0]);
|
93
|
+
self_ptr->height = NUM2DBL(argv[1]);
|
94
|
+
break;
|
95
|
+
default:
|
96
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..2)", argc);
|
97
|
+
}
|
98
|
+
return self;
|
99
|
+
}
|
100
|
+
|
101
|
+
/*
|
102
|
+
* Return size of x-axis.
|
103
|
+
*/
|
104
|
+
VALUE
|
105
|
+
rb_width(VALUE self)
|
106
|
+
{
|
107
|
+
return rb_float_new(CVSIZE2D32F(self)->width);
|
108
|
+
}
|
109
|
+
|
110
|
+
/*
|
111
|
+
* call-seq:
|
112
|
+
* width = val
|
113
|
+
*
|
114
|
+
* Set x-axis size, return self.
|
115
|
+
*/
|
116
|
+
VALUE
|
117
|
+
rb_set_width(VALUE self, VALUE x)
|
118
|
+
{
|
119
|
+
CVSIZE2D32F(self)->width = NUM2DBL(x);
|
120
|
+
return self;
|
121
|
+
}
|
122
|
+
|
123
|
+
/*
|
124
|
+
* Return size of yaxis.
|
125
|
+
*/
|
126
|
+
VALUE
|
127
|
+
rb_height(VALUE self)
|
128
|
+
{
|
129
|
+
return rb_float_new(CVSIZE2D32F(self)->height);
|
130
|
+
}
|
131
|
+
|
132
|
+
/*
|
133
|
+
* call-seq:
|
134
|
+
* height = val
|
135
|
+
*
|
136
|
+
* Set y-axis size, return self.
|
137
|
+
*/
|
138
|
+
VALUE
|
139
|
+
rb_set_height(VALUE self, VALUE y)
|
140
|
+
{
|
141
|
+
CVSIZE2D32F(self)->height = NUM2DBL(y);
|
142
|
+
return self;
|
143
|
+
}
|
144
|
+
|
145
|
+
/*
|
146
|
+
* call-seq:
|
147
|
+
* to_s -> "<OpenCV::CvSize2D32f:widthxheight>"
|
148
|
+
*
|
149
|
+
* Return width and height by String.
|
150
|
+
*/
|
151
|
+
VALUE
|
152
|
+
rb_to_s(VALUE self)
|
153
|
+
{
|
154
|
+
const int i = 4;
|
155
|
+
VALUE str[i];
|
156
|
+
str[0] = rb_str_new2("<%s:%gx%g>");
|
157
|
+
str[1] = rb_str_new2(rb_class2name(CLASS_OF(self)));
|
158
|
+
str[2] = rb_width(self);
|
159
|
+
str[3] = rb_height(self);
|
160
|
+
return rb_f_sprintf(i, str);
|
161
|
+
}
|
162
|
+
|
163
|
+
/*
|
164
|
+
* call-seq:
|
165
|
+
* to_ary -> [width, height]
|
166
|
+
*
|
167
|
+
* Return width and height by Array.
|
168
|
+
*/
|
169
|
+
VALUE
|
170
|
+
rb_to_ary(VALUE self)
|
171
|
+
{
|
172
|
+
return rb_ary_new3(2, rb_width(self), rb_height(self));
|
173
|
+
}
|
174
|
+
|
175
|
+
VALUE
|
176
|
+
new_object(CvSize2D32f size)
|
177
|
+
{
|
178
|
+
VALUE object = rb_allocate(rb_klass);
|
179
|
+
*CVSIZE2D32F(object) = size;
|
180
|
+
return object;
|
181
|
+
}
|
182
|
+
|
183
|
+
void
|
184
|
+
init_ruby_class()
|
185
|
+
{
|
186
|
+
#if 0
|
187
|
+
// For documentation using YARD
|
188
|
+
VALUE opencv = rb_define_module("OpenCV");
|
189
|
+
#endif
|
190
|
+
|
191
|
+
if (rb_klass)
|
192
|
+
return;
|
193
|
+
/*
|
194
|
+
* opencv = rb_define_module("OpenCV");
|
195
|
+
*
|
196
|
+
* note: this comment is used by rdoc.
|
197
|
+
*/
|
198
|
+
VALUE opencv = rb_module_opencv();
|
199
|
+
|
200
|
+
rb_klass = rb_define_class_under(opencv, "CvSize2D32f", rb_cObject);
|
201
|
+
rb_define_alloc_func(rb_klass, rb_allocate);
|
202
|
+
rb_define_singleton_method(rb_klass, "compatible?", RUBY_METHOD_FUNC(rb_compatible_q), 1);
|
203
|
+
rb_define_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
|
204
|
+
rb_define_method(rb_klass, "width", RUBY_METHOD_FUNC(rb_width), 0);
|
205
|
+
rb_define_method(rb_klass, "width=", RUBY_METHOD_FUNC(rb_set_width), 1);
|
206
|
+
rb_define_method(rb_klass, "height", RUBY_METHOD_FUNC(rb_height), 0);
|
207
|
+
rb_define_method(rb_klass, "height=", RUBY_METHOD_FUNC(rb_set_height), 1);
|
208
|
+
rb_define_method(rb_klass, "to_s", RUBY_METHOD_FUNC(rb_to_s), 0);
|
209
|
+
rb_define_method(rb_klass, "to_ary", RUBY_METHOD_FUNC(rb_to_ary), 0);
|
210
|
+
rb_define_alias(rb_klass, "to_a", "to_ary");
|
211
|
+
}
|
212
|
+
|
213
|
+
__NAMESPACE_END_CVSIZE2D32F
|
214
|
+
__NAMESPACE_END_OPENCV
|
215
|
+
|