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.
Files changed (240) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +28 -0
  3. data/.yardopts +3 -0
  4. data/DEVELOPERS_NOTE.md +137 -0
  5. data/Gemfile +9 -0
  6. data/History.txt +5 -0
  7. data/License.txt +30 -0
  8. data/Manifest.txt +239 -0
  9. data/README.md +98 -0
  10. data/Rakefile +99 -0
  11. data/config.yml +7 -0
  12. data/examples/alpha_blend.rb +21 -0
  13. data/examples/contours/bitmap-contours-with-labels.png +0 -0
  14. data/examples/contours/bitmap-contours.png +0 -0
  15. data/examples/contours/bounding-box-detect-canny.rb +62 -0
  16. data/examples/contours/contour_retrieval_modes.rb +139 -0
  17. data/examples/contours/rotated-boxes.jpg +0 -0
  18. data/examples/convexhull.rb +47 -0
  19. data/examples/face_detect.rb +20 -0
  20. data/examples/facerec/create_csv.rb +43 -0
  21. data/examples/facerec/facerec_eigenfaces.rb +132 -0
  22. data/examples/facerec/facerec_fisherfaces.rb +131 -0
  23. data/examples/facerec/facerec_lbph.rb +116 -0
  24. data/examples/facerec/readme.md +111 -0
  25. data/examples/find_obj.rb +169 -0
  26. data/examples/houghcircle.rb +22 -0
  27. data/examples/images/box.png +0 -0
  28. data/examples/images/box_in_scene.png +0 -0
  29. data/examples/images/inpaint.png +0 -0
  30. data/examples/images/lena-256x256.jpg +0 -0
  31. data/examples/images/lena-eyes.jpg +0 -0
  32. data/examples/images/lenna-rotated.jpg +0 -0
  33. data/examples/images/lenna.jpg +0 -0
  34. data/examples/images/stuff.jpg +0 -0
  35. data/examples/images/tiffany.jpg +0 -0
  36. data/examples/inpaint.rb +57 -0
  37. data/examples/match_kdtree.rb +88 -0
  38. data/examples/match_template.rb +26 -0
  39. data/examples/paint.rb +70 -0
  40. data/examples/snake.rb +43 -0
  41. data/ext/opencv/algorithm.cpp +291 -0
  42. data/ext/opencv/algorithm.h +38 -0
  43. data/ext/opencv/curve.cpp +127 -0
  44. data/ext/opencv/curve.h +34 -0
  45. data/ext/opencv/cvavgcomp.cpp +64 -0
  46. data/ext/opencv/cvavgcomp.h +39 -0
  47. data/ext/opencv/cvbox2d.cpp +195 -0
  48. data/ext/opencv/cvbox2d.h +61 -0
  49. data/ext/opencv/cvcapture.cpp +607 -0
  50. data/ext/opencv/cvcapture.h +72 -0
  51. data/ext/opencv/cvchain.cpp +233 -0
  52. data/ext/opencv/cvchain.h +46 -0
  53. data/ext/opencv/cvcircle32f.cpp +126 -0
  54. data/ext/opencv/cvcircle32f.h +52 -0
  55. data/ext/opencv/cvconnectedcomp.cpp +156 -0
  56. data/ext/opencv/cvconnectedcomp.h +49 -0
  57. data/ext/opencv/cvcontour.cpp +332 -0
  58. data/ext/opencv/cvcontour.h +48 -0
  59. data/ext/opencv/cvcontourtree.cpp +96 -0
  60. data/ext/opencv/cvcontourtree.h +41 -0
  61. data/ext/opencv/cvconvexitydefect.cpp +92 -0
  62. data/ext/opencv/cvconvexitydefect.h +42 -0
  63. data/ext/opencv/cverror.cpp +115 -0
  64. data/ext/opencv/cverror.h +28 -0
  65. data/ext/opencv/cvfeaturetree.cpp +123 -0
  66. data/ext/opencv/cvfeaturetree.h +55 -0
  67. data/ext/opencv/cvfont.cpp +228 -0
  68. data/ext/opencv/cvfont.h +64 -0
  69. data/ext/opencv/cvhaarclassifiercascade.cpp +148 -0
  70. data/ext/opencv/cvhaarclassifiercascade.h +39 -0
  71. data/ext/opencv/cvhistogram.cpp +715 -0
  72. data/ext/opencv/cvhistogram.h +73 -0
  73. data/ext/opencv/cvhumoments.cpp +178 -0
  74. data/ext/opencv/cvhumoments.h +51 -0
  75. data/ext/opencv/cvline.cpp +159 -0
  76. data/ext/opencv/cvline.h +54 -0
  77. data/ext/opencv/cvmat.cpp +6829 -0
  78. data/ext/opencv/cvmat.h +323 -0
  79. data/ext/opencv/cvmemstorage.cpp +73 -0
  80. data/ext/opencv/cvmemstorage.h +53 -0
  81. data/ext/opencv/cvmoments.cpp +293 -0
  82. data/ext/opencv/cvmoments.h +75 -0
  83. data/ext/opencv/cvpoint.cpp +265 -0
  84. data/ext/opencv/cvpoint.h +67 -0
  85. data/ext/opencv/cvpoint2d32f.cpp +216 -0
  86. data/ext/opencv/cvpoint2d32f.h +63 -0
  87. data/ext/opencv/cvpoint3d32f.cpp +252 -0
  88. data/ext/opencv/cvpoint3d32f.h +66 -0
  89. data/ext/opencv/cvrect.cpp +441 -0
  90. data/ext/opencv/cvrect.h +88 -0
  91. data/ext/opencv/cvscalar.cpp +301 -0
  92. data/ext/opencv/cvscalar.h +76 -0
  93. data/ext/opencv/cvseq.cpp +605 -0
  94. data/ext/opencv/cvseq.h +74 -0
  95. data/ext/opencv/cvsize.cpp +227 -0
  96. data/ext/opencv/cvsize.h +65 -0
  97. data/ext/opencv/cvsize2d32f.cpp +215 -0
  98. data/ext/opencv/cvsize2d32f.h +64 -0
  99. data/ext/opencv/cvslice.cpp +126 -0
  100. data/ext/opencv/cvslice.h +61 -0
  101. data/ext/opencv/cvsurfparams.cpp +208 -0
  102. data/ext/opencv/cvsurfparams.h +58 -0
  103. data/ext/opencv/cvsurfpoint.cpp +279 -0
  104. data/ext/opencv/cvsurfpoint.h +54 -0
  105. data/ext/opencv/cvtermcriteria.cpp +198 -0
  106. data/ext/opencv/cvtermcriteria.h +71 -0
  107. data/ext/opencv/cvtwopoints.cpp +122 -0
  108. data/ext/opencv/cvtwopoints.h +51 -0
  109. data/ext/opencv/cvutils.cpp +221 -0
  110. data/ext/opencv/cvutils.h +31 -0
  111. data/ext/opencv/cvvideowriter.cpp +142 -0
  112. data/ext/opencv/cvvideowriter.h +43 -0
  113. data/ext/opencv/eigenfaces.cpp +75 -0
  114. data/ext/opencv/eigenfaces.h +30 -0
  115. data/ext/opencv/extconf.rb +82 -0
  116. data/ext/opencv/facerecognizer.cpp +181 -0
  117. data/ext/opencv/facerecognizer.h +46 -0
  118. data/ext/opencv/fisherfaces.cpp +75 -0
  119. data/ext/opencv/fisherfaces.h +30 -0
  120. data/ext/opencv/gui.cpp +71 -0
  121. data/ext/opencv/gui.h +30 -0
  122. data/ext/opencv/iplconvkernel.cpp +198 -0
  123. data/ext/opencv/iplconvkernel.h +71 -0
  124. data/ext/opencv/iplimage.cpp +666 -0
  125. data/ext/opencv/iplimage.h +75 -0
  126. data/ext/opencv/lbph.cpp +78 -0
  127. data/ext/opencv/lbph.h +30 -0
  128. data/ext/opencv/mouseevent.cpp +186 -0
  129. data/ext/opencv/mouseevent.h +56 -0
  130. data/ext/opencv/opencv.cpp +833 -0
  131. data/ext/opencv/opencv.h +405 -0
  132. data/ext/opencv/pointset.cpp +280 -0
  133. data/ext/opencv/pointset.h +68 -0
  134. data/ext/opencv/trackbar.cpp +127 -0
  135. data/ext/opencv/trackbar.h +69 -0
  136. data/ext/opencv/window.cpp +377 -0
  137. data/ext/opencv/window.h +66 -0
  138. data/images/CvMat_sobel.png +0 -0
  139. data/images/CvMat_sub_rect.png +0 -0
  140. data/images/CvSeq_relationmap.png +0 -0
  141. data/lib/opencv.rb +12 -0
  142. data/lib/opencv/psyched_yaml.rb +22 -0
  143. data/lib/opencv/version.rb +4 -0
  144. data/test/eigenfaces_save.xml +7524 -0
  145. data/test/fisherfaces_save.xml +7530 -0
  146. data/test/helper.rb +166 -0
  147. data/test/lbph_save.xml +4304 -0
  148. data/test/runner.rb +30 -0
  149. data/test/samples/airplane.jpg +0 -0
  150. data/test/samples/baboon.jpg +0 -0
  151. data/test/samples/baboon200.jpg +0 -0
  152. data/test/samples/baboon200_rotated.jpg +0 -0
  153. data/test/samples/blank0.jpg +0 -0
  154. data/test/samples/blank1.jpg +0 -0
  155. data/test/samples/blank2.jpg +0 -0
  156. data/test/samples/blank3.jpg +0 -0
  157. data/test/samples/blank4.jpg +0 -0
  158. data/test/samples/blank5.jpg +0 -0
  159. data/test/samples/blank6.jpg +0 -0
  160. data/test/samples/blank7.jpg +0 -0
  161. data/test/samples/blank8.jpg +0 -0
  162. data/test/samples/blank9.jpg +0 -0
  163. data/test/samples/cat.jpg +0 -0
  164. data/test/samples/chessboard.jpg +0 -0
  165. data/test/samples/contours.jpg +0 -0
  166. data/test/samples/fruits.jpg +0 -0
  167. data/test/samples/haarcascade_frontalface_alt.xml.gz +0 -0
  168. data/test/samples/inpaint-mask.bmp +0 -0
  169. data/test/samples/lena-256x256.jpg +0 -0
  170. data/test/samples/lena-32x32.jpg +0 -0
  171. data/test/samples/lena-eyes.jpg +0 -0
  172. data/test/samples/lena-inpaint.jpg +0 -0
  173. data/test/samples/lena.jpg +0 -0
  174. data/test/samples/lines.jpg +0 -0
  175. data/test/samples/messy0.jpg +0 -0
  176. data/test/samples/messy1.jpg +0 -0
  177. data/test/samples/movie_sample.avi +0 -0
  178. data/test/samples/one_way_train_0000.jpg +0 -0
  179. data/test/samples/one_way_train_0001.jpg +0 -0
  180. data/test/samples/partially_blank0.jpg +0 -0
  181. data/test/samples/partially_blank1.jpg +0 -0
  182. data/test/samples/smooth0.jpg +0 -0
  183. data/test/samples/smooth1.jpg +0 -0
  184. data/test/samples/smooth2.jpg +0 -0
  185. data/test/samples/smooth3.jpg +0 -0
  186. data/test/samples/smooth4.jpg +0 -0
  187. data/test/samples/smooth5.jpg +0 -0
  188. data/test/samples/smooth6.jpg +0 -0
  189. data/test/samples/str-cv-rotated.jpg +0 -0
  190. data/test/samples/str-cv.jpg +0 -0
  191. data/test/samples/str-ov.jpg +0 -0
  192. data/test/samples/stuff.jpg +0 -0
  193. data/test/test_curve.rb +43 -0
  194. data/test/test_cvavgcomp.rb +24 -0
  195. data/test/test_cvbox2d.rb +76 -0
  196. data/test/test_cvcapture.rb +183 -0
  197. data/test/test_cvchain.rb +108 -0
  198. data/test/test_cvcircle32f.rb +41 -0
  199. data/test/test_cvconnectedcomp.rb +61 -0
  200. data/test/test_cvcontour.rb +150 -0
  201. data/test/test_cvcontourtree.rb +43 -0
  202. data/test/test_cverror.rb +50 -0
  203. data/test/test_cvfeaturetree.rb +65 -0
  204. data/test/test_cvfont.rb +58 -0
  205. data/test/test_cvhaarclassifiercascade.rb +63 -0
  206. data/test/test_cvhistogram.rb +271 -0
  207. data/test/test_cvhumoments.rb +83 -0
  208. data/test/test_cvline.rb +50 -0
  209. data/test/test_cvmat.rb +3003 -0
  210. data/test/test_cvmat_drawing.rb +349 -0
  211. data/test/test_cvmat_dxt.rb +150 -0
  212. data/test/test_cvmat_imageprocessing.rb +2085 -0
  213. data/test/test_cvmoments.rb +180 -0
  214. data/test/test_cvpoint.rb +75 -0
  215. data/test/test_cvpoint2d32f.rb +75 -0
  216. data/test/test_cvpoint3d32f.rb +93 -0
  217. data/test/test_cvrect.rb +144 -0
  218. data/test/test_cvscalar.rb +113 -0
  219. data/test/test_cvseq.rb +295 -0
  220. data/test/test_cvsize.rb +75 -0
  221. data/test/test_cvsize2d32f.rb +75 -0
  222. data/test/test_cvslice.rb +31 -0
  223. data/test/test_cvsurfparams.rb +57 -0
  224. data/test/test_cvsurfpoint.rb +66 -0
  225. data/test/test_cvtermcriteria.rb +56 -0
  226. data/test/test_cvtwopoints.rb +40 -0
  227. data/test/test_cvvideowriter.rb +58 -0
  228. data/test/test_eigenfaces.rb +93 -0
  229. data/test/test_fisherfaces.rb +93 -0
  230. data/test/test_iplconvkernel.rb +54 -0
  231. data/test/test_iplimage.rb +232 -0
  232. data/test/test_lbph.rb +152 -0
  233. data/test/test_mouseevent.rb +17 -0
  234. data/test/test_opencv.rb +360 -0
  235. data/test/test_pointset.rb +128 -0
  236. data/test/test_preliminary.rb +130 -0
  237. data/test/test_trackbar.rb +47 -0
  238. data/test/test_window.rb +115 -0
  239. data/yard_extension.rb +5 -0
  240. metadata +399 -0
@@ -0,0 +1,64 @@
1
+ /************************************************************
2
+
3
+ cvsize2d32f.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVSIZE2D32F_H
11
+ #define RUBY_OPENCV_CVSIZE2D32F_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVSIZE2D32F namespace cCvSize2D32f {
16
+ #define __NAMESPACE_END_CVSIZE2D32F }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_CVSIZE2D32F
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(CvSize2D32f size);
38
+
39
+ __NAMESPACE_END_CVSIZE2D32F
40
+
41
+ inline CvSize2D32f*
42
+ CVSIZE2D32F(VALUE object)
43
+ {
44
+ CvSize2D32f *ptr;
45
+ Data_Get_Struct(object, CvSize2D32f, ptr);
46
+ return ptr;
47
+ }
48
+
49
+ inline CvSize2D32f
50
+ VALUE_TO_CVSIZE2D32F(VALUE object)
51
+ {
52
+ if (cCvSize2D32f::rb_compatible_q(cCvSize2D32f::rb_class(), object)) {
53
+ return cvSize2D32f(NUM2DBL(rb_funcall(object, rb_intern("width"), 0)),
54
+ NUM2DBL(rb_funcall(object, rb_intern("height"), 0)));
55
+ }
56
+ else {
57
+ raise_compatible_typeerror(object, cCvSize2D32f::rb_class());
58
+ }
59
+ throw "Should never reach here";
60
+ }
61
+
62
+ __NAMESPACE_END_OPENCV
63
+
64
+ #endif // RUBY_OPENCV_CVSIZE2D32F_H
@@ -0,0 +1,126 @@
1
+ /************************************************************
2
+
3
+ cvslice.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "cvslice.h"
11
+ /*
12
+ * Document-class: OpenCV::CvSlice
13
+ *
14
+ * C structure is here, very simple.
15
+ * typdef struct CvSlice {
16
+ * int start_index;
17
+ * int end_index;
18
+ * } CvSlice;
19
+ */
20
+ __NAMESPACE_BEGIN_OPENCV
21
+ __NAMESPACE_BEGIN_CVSLICE
22
+
23
+ VALUE rb_klass;
24
+
25
+ VALUE
26
+ rb_class()
27
+ {
28
+ return rb_klass;
29
+ }
30
+
31
+ VALUE
32
+ rb_allocate(VALUE klass)
33
+ {
34
+ CvSlice *ptr;
35
+ return Data_Make_Struct(klass, CvSlice, 0, -1, ptr);
36
+ }
37
+
38
+ /*
39
+ * call-seq:
40
+ * new(start, end)
41
+ *
42
+ * Create new slice object.
43
+ */
44
+ VALUE
45
+ rb_initialize(VALUE self, VALUE start, VALUE end)
46
+ {
47
+ CvSlice *self_ptr = CVSLICE(self);
48
+ self_ptr->start_index = NUM2INT(start);
49
+ self_ptr->end_index = NUM2INT(end);
50
+ return self;
51
+ }
52
+
53
+ /*
54
+ * call-seq:
55
+ * start_index
56
+ *
57
+ */
58
+ VALUE
59
+ rb_start_index_aref(VALUE self)
60
+ {
61
+ return INT2NUM(CVSLICE(self)->start_index);
62
+ }
63
+
64
+ /*
65
+ * call-seq:
66
+ * end_index
67
+ *
68
+ */
69
+ VALUE
70
+ rb_end_index_aref(VALUE self)
71
+ {
72
+ return INT2NUM(CVSLICE(self)->end_index);
73
+ }
74
+
75
+ /*
76
+ * call-seq:
77
+ * start_index = index
78
+ *
79
+ */
80
+ VALUE
81
+ rb_start_index_aset(VALUE self, VALUE index)
82
+ {
83
+ CVSLICE(self)->start_index = NUM2INT(index);
84
+ return self;
85
+ }
86
+
87
+ /*
88
+ * call-seq:
89
+ * end_index = index
90
+ *
91
+ */
92
+ VALUE
93
+ rb_end_index_aset(VALUE self, VALUE index)
94
+ {
95
+ CVSLICE(self)->end_index = NUM2INT(index);
96
+ return self;
97
+ }
98
+
99
+ void
100
+ init_ruby_class()
101
+ {
102
+ #if 0
103
+ // For documentation using YARD
104
+ VALUE opencv = rb_define_module("OpenCV");
105
+ #endif
106
+
107
+ if (rb_klass)
108
+ return;
109
+ /*
110
+ * opencv = rb_define_module("OpenCV");
111
+ *
112
+ * note: this comment is used by rdoc.
113
+ */
114
+ VALUE opencv = rb_module_opencv();
115
+ rb_klass = rb_define_class_under(opencv, "CvSlice", rb_cObject);
116
+ rb_define_alloc_func(rb_klass, rb_allocate);
117
+ rb_define_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), 2);
118
+ rb_define_method(rb_klass, "start_index", RUBY_METHOD_FUNC(rb_start_index_aref), 0);
119
+ rb_define_method(rb_klass, "end_index", RUBY_METHOD_FUNC(rb_end_index_aref), 0);
120
+ rb_define_method(rb_klass, "start_index=", RUBY_METHOD_FUNC(rb_start_index_aset), 1);
121
+ rb_define_method(rb_klass, "end_index=", RUBY_METHOD_FUNC(rb_end_index_aset), 1);
122
+ }
123
+
124
+ __NAMESPACE_END_CVSLICE
125
+ __NAMESPACE_END_OPENCV
126
+
@@ -0,0 +1,61 @@
1
+ /************************************************************
2
+
3
+ cvslice.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVSLICE_H
11
+ #define RUBY_OPENCV_CVSLICE_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVSLICE namespace cCvSlice {
16
+ #define __NAMESPACE_END_CVSLICE }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_CVSLICE
20
+
21
+ VALUE rb_class();
22
+
23
+ void init_ruby_class();
24
+
25
+ VALUE rb_allocate(VALUE klass);
26
+ VALUE rb_initialize(VALUE self, VALUE start, VALUE end);
27
+ VALUE rb_start_index_aref(VALUE self);
28
+ VALUE rb_end_index_aref(VALUE self);
29
+ VALUE rb_start_index_aset(VALUE self, VALUE index);
30
+ VALUE rb_end_index_aset(VALUE self, VALUE index);
31
+
32
+ __NAMESPACE_END_CVSLICE
33
+
34
+ inline CvSlice*
35
+ CVSLICE(VALUE object)
36
+ {
37
+ CvSlice *ptr;
38
+ Data_Get_Struct(object, CvSlice, ptr);
39
+ return ptr;
40
+ }
41
+
42
+ inline CvSlice
43
+ VALUE_TO_CVSLICE(VALUE object)
44
+ {
45
+ if (rb_obj_is_kind_of(object, cCvSlice::rb_class())) {
46
+ CvSlice* ptr = CVSLICE(object);
47
+ return *ptr;
48
+ }
49
+ else if (rb_obj_is_kind_of(object, rb_cRange)) {
50
+ return cvSlice(NUM2INT(rb_funcall(object, rb_intern("begin"), 0)),
51
+ rb_funcall(object, rb_intern("exclude_end?"), 0) ? NUM2INT(rb_funcall(object, rb_intern("end"), 0)) : NUM2INT(rb_funcall(object, rb_intern("end"), 0)) - 1);
52
+ }
53
+ else {
54
+ raise_compatible_typeerror(object, cCvSlice::rb_class());
55
+ }
56
+ throw "Should never reach here";
57
+ }
58
+
59
+ __NAMESPACE_END_OPENCV
60
+
61
+ #endif // RUBY_OPENCV_CVSLICE_H
@@ -0,0 +1,208 @@
1
+ /************************************************************
2
+
3
+ cvsurfparams.cpp -
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2011 ser1zw
8
+
9
+ ************************************************************/
10
+ #include "cvsurfparams.h"
11
+ /*
12
+ * Document-class: OpenCV::CvSURFParams
13
+ *
14
+ * C structure is here.
15
+ * typedef struct CvSURFParams {
16
+ * int extended;
17
+ * double hessianThreshold;
18
+ * int nOctaves;
19
+ * int nOctaveLayers;
20
+ * } CvSURFParams;
21
+ */
22
+ __NAMESPACE_BEGIN_OPENCV
23
+ __NAMESPACE_BEGIN_CVSURFPARAMS
24
+
25
+ VALUE rb_klass;
26
+
27
+ VALUE
28
+ rb_class()
29
+ {
30
+ return rb_klass;
31
+ }
32
+
33
+ VALUE
34
+ rb_allocate(VALUE klass)
35
+ {
36
+ CvSURFParams *ptr;
37
+ return Data_Make_Struct(klass, CvSURFParams, 0, -1, ptr);
38
+ }
39
+
40
+ /*
41
+ * Create a CvSURFParams
42
+ *
43
+ * @overload CvSURFParams.new(hessian_threshold, extended = false, n_octaves = 3, n_octave_layers = 4)
44
+ * @param hessian_threshold [Number]
45
+ * @param extended [Boolean] If <tt>true</tt>, exteneded descriptors (128 elements each),
46
+ * otherwise basic descriptors (64 elements each)
47
+ * @param n_octaves [Integer] Number of octaves to be used for extraction
48
+ * @param n_octave_layers [Integer] Number of layers within each octave
49
+ */
50
+ VALUE
51
+ rb_initialize(int argc, VALUE *argv, VALUE self)
52
+ {
53
+ CvSURFParams *self_ptr = CVSURFPARAMS(self);
54
+ VALUE h_thresh, ext, noct, noctl;
55
+ rb_scan_args(argc, argv, "13", &h_thresh, &ext, &noct, &noctl);
56
+
57
+ self_ptr->hessianThreshold = NUM2DBL(h_thresh);
58
+ self_ptr->extended = NIL_P(ext) ? 0 : BOOL2INT(ext);
59
+ self_ptr->nOctaves = NIL_P(noct) ? 3 : NUM2INT(noct);
60
+ self_ptr->nOctaveLayers = NIL_P(noctl) ? 4 : NUM2INT(noctl);
61
+
62
+ return self;
63
+ }
64
+
65
+ /*
66
+ * call-seq:
67
+ * hessian_threshold -> number
68
+ * Return threshold of hessian
69
+ */
70
+ VALUE
71
+ rb_get_hessian_threshold(VALUE self)
72
+ {
73
+ return DBL2NUM(CVSURFPARAMS(self)->hessianThreshold);
74
+ }
75
+
76
+ /*
77
+ * call-seq:
78
+ * hessian_threshold = <i>value</i>
79
+ *
80
+ * Set threshold of hessian to <i>value</i>
81
+ */
82
+ VALUE
83
+ rb_set_hessian_threshold(VALUE self, VALUE value)
84
+ {
85
+ CVSURFPARAMS(self)->hessianThreshold = NUM2DBL(value);
86
+ return self;
87
+ }
88
+
89
+ /*
90
+ * call-seq:
91
+ * extended -> bool
92
+ * Return the type of descripters
93
+ * false: basic descriptors (64 elements each)
94
+ * true : exteneded descriptors (128 elements each)
95
+ */
96
+ VALUE
97
+ rb_get_extended(VALUE self)
98
+ {
99
+ return INT2BOOL(CVSURFPARAMS(self)->extended);
100
+ }
101
+
102
+ /*
103
+ * call-seq:
104
+ * extended = <i>value</i>
105
+ * Set the type of descripters
106
+ * false: basic descriptors (64 elements each)
107
+ * true : exteneded descriptors (128 elements each)
108
+ */
109
+ VALUE
110
+ rb_set_extended(VALUE self, VALUE value)
111
+ {
112
+ CVSURFPARAMS(self)->extended = BOOL2INT(value);
113
+ return self;
114
+ }
115
+
116
+ /*
117
+ * call-seq:
118
+ * n_octaves -> fixnum
119
+ * Return the number of octaves to be used for extraction
120
+ */
121
+ VALUE
122
+ rb_get_n_octaves(VALUE self)
123
+ {
124
+ return INT2NUM(CVSURFPARAMS(self)->nOctaves);
125
+ }
126
+
127
+ /*
128
+ * call-seq:
129
+ * n_octaves = <i>value</i>
130
+ * Set the number of octaves to be used for extraction
131
+ */
132
+ VALUE
133
+ rb_set_n_octaves(VALUE self, VALUE value)
134
+ {
135
+ CVSURFPARAMS(self)->nOctaves = NUM2INT(value);
136
+ return self;
137
+ }
138
+
139
+ /*
140
+ * call-seq:
141
+ * n_octave_layers -> fixnum
142
+ * Return the number of layers within each octave
143
+ */
144
+ VALUE
145
+ rb_get_n_octave_layers(VALUE self)
146
+ {
147
+ return INT2NUM(CVSURFPARAMS(self)->nOctaveLayers);
148
+ }
149
+
150
+ /*
151
+ * call-seq:
152
+ * n_octave_layers = <i>value</i>
153
+ * Set the number of layers within each octave
154
+ */
155
+ VALUE
156
+ rb_set_n_octave_layers(VALUE self, VALUE value)
157
+ {
158
+ CVSURFPARAMS(self)->nOctaveLayers = NUM2INT(value);
159
+ return self;
160
+ }
161
+
162
+ VALUE
163
+ new_object()
164
+ {
165
+ return rb_allocate(rb_klass);
166
+ }
167
+
168
+ VALUE
169
+ new_object(CvSURFParams* cvsurfparams)
170
+ {
171
+ VALUE object = rb_allocate(rb_klass);
172
+ CvSURFParams *ptr = CVSURFPARAMS(object);
173
+ ptr = cvsurfparams;
174
+ return object;
175
+ }
176
+
177
+ void
178
+ init_ruby_class()
179
+ {
180
+ #if 0
181
+ // For documentation using YARD
182
+ VALUE opencv = rb_define_module("OpenCV");
183
+ #endif
184
+
185
+ if (rb_klass)
186
+ return;
187
+ /*
188
+ * opencv = rb_define_module("OpenCV");
189
+ *
190
+ * note: this comment is used by rdoc.
191
+ */
192
+ VALUE opencv = rb_module_opencv();
193
+ rb_klass = rb_define_class_under(opencv, "CvSURFParams", rb_cObject);
194
+ rb_define_alloc_func(rb_klass, rb_allocate);
195
+ rb_define_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
196
+ rb_define_method(rb_klass, "hessian_threshold", RUBY_METHOD_FUNC(rb_get_hessian_threshold), 0);
197
+ rb_define_method(rb_klass, "hessian_threshold=", RUBY_METHOD_FUNC(rb_set_hessian_threshold), 1);
198
+ rb_define_method(rb_klass, "extended", RUBY_METHOD_FUNC(rb_get_extended), 0);
199
+ rb_define_method(rb_klass, "extended=", RUBY_METHOD_FUNC(rb_set_extended), 1);
200
+ rb_define_method(rb_klass, "n_octaves", RUBY_METHOD_FUNC(rb_get_n_octaves), 0);
201
+ rb_define_method(rb_klass, "n_octaves=", RUBY_METHOD_FUNC(rb_set_n_octaves), 1);
202
+ rb_define_method(rb_klass, "n_octave_layers", RUBY_METHOD_FUNC(rb_get_n_octave_layers), 0);
203
+ rb_define_method(rb_klass, "n_octave_layers=", RUBY_METHOD_FUNC(rb_set_n_octave_layers), 1);
204
+ }
205
+
206
+ __NAMESPACE_END_CVSURFPARAMS
207
+ __NAMESPACE_END_OPENCV
208
+