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,73 @@
1
+ /************************************************************
2
+
3
+ cvhistogram.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2008 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVHISTOGRAM_H
11
+ #define RUBY_OPENCV_CVHISTOGRAM_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVHISTOGRAM namespace cCvHistogram {
16
+ #define __NAMESPACE_END_CVHISTOGRAM }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_CVHISTOGRAM
20
+
21
+ VALUE rb_class();
22
+ VALUE rb_allocate(VALUE klass);
23
+ void init_ruby_class();
24
+
25
+ VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
26
+ VALUE rb_is_uniform(VALUE self);
27
+ VALUE rb_is_sparse(VALUE self);
28
+ VALUE rb_has_range(VALUE self);
29
+ VALUE rb_calc_hist(int argc, VALUE* argv, VALUE self);
30
+ VALUE rb_calc_hist_bang(int argc, VALUE* argv, VALUE self);
31
+ VALUE rb_aref(VALUE self, VALUE args);
32
+ VALUE rb_min_max_value(VALUE self);
33
+ VALUE rb_dims(VALUE self);
34
+ VALUE rb_copy_hist(VALUE self);
35
+
36
+ VALUE rb_clear_hist(VALUE self);
37
+ VALUE rb_clear_hist_bang(VALUE self);
38
+
39
+ VALUE rb_normalize_hist(VALUE self, VALUE factor);
40
+ VALUE rb_normalize_hist_bang(VALUE self, VALUE factor);
41
+ VALUE rb_thresh_hist(VALUE self, VALUE threshold);
42
+ VALUE rb_thresh_hist_bang(VALUE self, VALUE threshold);
43
+
44
+ VALUE rb_set_hist_bin_ranges(int argc, VALUE* argv, VALUE self);
45
+ VALUE rb_set_hist_bin_ranges_bang(int argc, VALUE* argv, VALUE self);
46
+
47
+ VALUE rb_calc_back_project(VALUE self, VALUE image);
48
+ VALUE rb_calc_back_project_patch(VALUE self, VALUE image, VALUE patch_size, VALUE method, VALUE factor);
49
+
50
+ VALUE rb_compare_hist(VALUE self, VALUE hist1, VALUE hist2, VALUE method);
51
+ VALUE rb_calc_prob_density(int argc, VALUE* argv, VALUE self);
52
+
53
+ __NAMESPACE_END_CVHISTOGRAM
54
+
55
+ inline CvHistogram*
56
+ CVHISTOGRAM(VALUE object)
57
+ {
58
+ CvHistogram* ptr;
59
+ Data_Get_Struct(object, CvHistogram, ptr);
60
+ return ptr;
61
+ }
62
+
63
+ inline CvHistogram*
64
+ CVHISTOGRAM_WITH_CHECK(VALUE object)
65
+ {
66
+ if (!rb_obj_is_kind_of(object, cCvHistogram::rb_class()))
67
+ raise_typeerror(object, cCvHistogram::rb_class());
68
+ return CVHISTOGRAM(object);
69
+ }
70
+
71
+ __NAMESPACE_END_OPENCV
72
+
73
+ #endif // RUBY_OPENCV_CVHISTOGRAM_H
@@ -0,0 +1,178 @@
1
+ /************************************************************
2
+
3
+ cvhumoments.cpp -
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2011 ser1zw
8
+
9
+ ************************************************************/
10
+ #include "cvhumoments.h"
11
+
12
+ /*
13
+ * Document-class: OpenCV::CvHuMoments
14
+ *
15
+ * Hu invariants
16
+ */
17
+ __NAMESPACE_BEGIN_OPENCV
18
+ __NAMESPACE_BEGIN_CVHUMOMENTS
19
+
20
+ VALUE rb_klass;
21
+
22
+ VALUE
23
+ rb_class()
24
+ {
25
+ return rb_klass;
26
+ }
27
+
28
+ VALUE
29
+ rb_allocate(VALUE klass)
30
+ {
31
+ CvHuMoments *ptr;
32
+ return Data_Make_Struct(klass, CvHuMoments, 0, -1, ptr);
33
+ }
34
+
35
+ /*
36
+ * Calculates the seven Hu invariants
37
+ * @overload new(src_moments)
38
+ * @param src_moments [CvMoment] Input moments
39
+ * @return [CvHuMoments] Output Hu invariants
40
+ * @opencv_func cvGetHuMoments
41
+ * @see http://en.wikipedia.org/wiki/Image_moment#Rotation_invariant_moments
42
+ */
43
+ VALUE
44
+ rb_initialize(VALUE self, VALUE src_moments)
45
+ {
46
+ try {
47
+ cvGetHuMoments(CVMOMENTS(src_moments), CVHUMOMENTS(self));
48
+ }
49
+ catch (cv::Exception& e) {
50
+ raise_cverror(e);
51
+ }
52
+ return self;
53
+ }
54
+
55
+ /*
56
+ * Returns hu1 invariant
57
+ * @overload hu1
58
+ * @return [Number] hu1 invariant
59
+ */
60
+ VALUE rb_hu1(VALUE self) {
61
+ return DBL2NUM(CVHUMOMENTS(self)->hu1);
62
+ }
63
+
64
+ /*
65
+ * Returns hu2 invariant
66
+ * @overload hu2
67
+ * @return [Number] hu2 invariant
68
+ */
69
+ VALUE rb_hu2(VALUE self) {
70
+ return DBL2NUM(CVHUMOMENTS(self)->hu2);
71
+ }
72
+
73
+ /*
74
+ * Returns hu3 invariant
75
+ * @overload hu3
76
+ * @return [Number] hu3 invariant
77
+ */
78
+ VALUE rb_hu3(VALUE self) {
79
+ return DBL2NUM(CVHUMOMENTS(self)->hu3);
80
+ }
81
+
82
+ /*
83
+ * Returns hu4 invariant
84
+ * @overload hu4
85
+ * @return [Number] hu4 invariant
86
+ */
87
+ VALUE rb_hu4(VALUE self) {
88
+ return DBL2NUM(CVHUMOMENTS(self)->hu4);
89
+ }
90
+
91
+ /*
92
+ * Returns hu5 invariant
93
+ * @overload hu5
94
+ * @return [Number] hu5 invariant
95
+ */
96
+ VALUE rb_hu5(VALUE self) {
97
+ return DBL2NUM(CVHUMOMENTS(self)->hu5);
98
+ }
99
+
100
+ /*
101
+ * Returns hu6 invariant
102
+ * @overload hu6
103
+ * @return [Number] hu6 invariant
104
+ */
105
+ VALUE rb_hu6(VALUE self) {
106
+ return DBL2NUM(CVHUMOMENTS(self)->hu6);
107
+ }
108
+
109
+ /*
110
+ * Returns hu7 invariant
111
+ * @overload hu7
112
+ * @return [Number] hu7 invariant
113
+ */
114
+ VALUE rb_hu7(VALUE self) {
115
+ return DBL2NUM(CVHUMOMENTS(self)->hu7);
116
+ }
117
+
118
+ /*
119
+ * Returns hu invaliants as an Array
120
+ * @overload to_ary
121
+ * @return [Array<Number>] Hu invaliants
122
+ */
123
+ VALUE
124
+ rb_to_ary(VALUE self)
125
+ {
126
+ CvHuMoments *hu_moments = CVHUMOMENTS(self);
127
+ return rb_ary_new3(7,
128
+ rb_float_new(hu_moments->hu1),
129
+ rb_float_new(hu_moments->hu2),
130
+ rb_float_new(hu_moments->hu3),
131
+ rb_float_new(hu_moments->hu4),
132
+ rb_float_new(hu_moments->hu5),
133
+ rb_float_new(hu_moments->hu6),
134
+ rb_float_new(hu_moments->hu7));
135
+ }
136
+
137
+ VALUE
138
+ new_object(CvMoments *src_moments)
139
+ {
140
+ VALUE object = rb_allocate(rb_klass);
141
+ try {
142
+ cvGetHuMoments(src_moments, CVHUMOMENTS(object));
143
+ }
144
+ catch (cv::Exception& e) {
145
+ raise_cverror(e);
146
+ }
147
+ return object;
148
+ }
149
+
150
+ void
151
+ init_ruby_class()
152
+ {
153
+ #if 0
154
+ // For documentation using YARD
155
+ VALUE opencv = rb_define_module("OpenCV");
156
+ #endif
157
+
158
+ if (rb_klass)
159
+ return;
160
+ VALUE opencv = rb_module_opencv();
161
+
162
+ rb_klass = rb_define_class_under(opencv, "CvHuMoments", rb_cObject);
163
+ rb_define_alloc_func(rb_klass, rb_allocate);
164
+ rb_define_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), 1);
165
+ rb_define_method(rb_klass, "to_ary", RUBY_METHOD_FUNC(rb_to_ary), 0);
166
+ rb_define_alias(rb_klass, "to_a", "to_ary");
167
+
168
+ rb_define_method(rb_klass, "hu1", RUBY_METHOD_FUNC(rb_hu1), 0);
169
+ rb_define_method(rb_klass, "hu2", RUBY_METHOD_FUNC(rb_hu2), 0);
170
+ rb_define_method(rb_klass, "hu3", RUBY_METHOD_FUNC(rb_hu3), 0);
171
+ rb_define_method(rb_klass, "hu4", RUBY_METHOD_FUNC(rb_hu4), 0);
172
+ rb_define_method(rb_klass, "hu5", RUBY_METHOD_FUNC(rb_hu5), 0);
173
+ rb_define_method(rb_klass, "hu6", RUBY_METHOD_FUNC(rb_hu6), 0);
174
+ rb_define_method(rb_klass, "hu7", RUBY_METHOD_FUNC(rb_hu7), 0);
175
+ }
176
+
177
+ __NAMESPACE_END_CVHUMOMENTS
178
+ __NAMESPACE_END_OPENCV
@@ -0,0 +1,51 @@
1
+ /************************************************************
2
+
3
+ cvhumoments.h -
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2011 ser1zw
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVHUMOMENTS_H
11
+ #define RUBY_OPENCV_CVHUMOMENTS_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVHUMOMENTS namespace cCvHuMoments {
16
+ #define __NAMESPACE_END_CVHUMOMENTS }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_CVHUMOMENTS
20
+
21
+ VALUE rb_class();
22
+
23
+ void init_ruby_class();
24
+
25
+ VALUE rb_allocate(VALUE klass);
26
+ VALUE rb_initialize(VALUE src_moments, VALUE self);
27
+
28
+ VALUE rb_hu1(VALUE self);
29
+ VALUE rb_hu2(VALUE self);
30
+ VALUE rb_hu3(VALUE self);
31
+ VALUE rb_hu4(VALUE self);
32
+ VALUE rb_hu5(VALUE self);
33
+ VALUE rb_hu6(VALUE self);
34
+ VALUE rb_hu7(VALUE self);
35
+ VALUE rb_to_ary(VALUE self);
36
+
37
+ VALUE new_object(CvMoments *cvmoments);
38
+
39
+ __NAMESPACE_END_CVHUMOMENTS
40
+
41
+ inline CvHuMoments*
42
+ CVHUMOMENTS(VALUE object)
43
+ {
44
+ CvHuMoments *ptr;
45
+ Data_Get_Struct(object, CvHuMoments, ptr);
46
+ return ptr;
47
+ }
48
+
49
+ __NAMESPACE_END_OPENCV
50
+
51
+ #endif // RUBY_OPENCV_CVHUMOMENTS_H
@@ -0,0 +1,159 @@
1
+ /************************************************************
2
+
3
+ cvline.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "cvline.h"
11
+ /*
12
+ * Document-class: OpenCV::CvLine
13
+ *
14
+ * Line parameters represented by a two-element (rho, theta)
15
+ * for CvMat#hough_lines
16
+ */
17
+ __NAMESPACE_BEGIN_OPENCV
18
+ __NAMESPACE_BEGIN_CVLINE
19
+
20
+ VALUE rb_klass;
21
+
22
+ VALUE
23
+ rb_class()
24
+ {
25
+ return rb_klass;
26
+ }
27
+
28
+ VALUE
29
+ rb_allocate(VALUE klass)
30
+ {
31
+ CvLine *ptr;
32
+ return Data_Make_Struct(klass, CvLine, 0, -1, ptr);
33
+ }
34
+
35
+ /*
36
+ * Returns distance from the coordinate origin (0, 0)
37
+ * @overload rho
38
+ * @return [Number] Distance from the coordinate origin
39
+ */
40
+ VALUE
41
+ rb_rho(VALUE self)
42
+ {
43
+ return rb_float_new(CVLINE(self)->rho);
44
+ }
45
+
46
+ /*
47
+ * Set distance from the coordinate origin (0, 0)
48
+ * @overload rho=(value)
49
+ * @param value [Number] Distance from the coordinate origin
50
+ */
51
+ VALUE
52
+ rb_set_rho(VALUE self, VALUE rho)
53
+ {
54
+ CVLINE(self)->rho = NUM2DBL(rho);
55
+ return self;
56
+ }
57
+
58
+ /*
59
+ * Returns line rotation angle in radians
60
+ * @overload theta
61
+ * @return [Number] Line rotation angle in radians
62
+ */
63
+ VALUE
64
+ rb_theta(VALUE self)
65
+ {
66
+ return rb_float_new(CVLINE(self)->theta);
67
+ }
68
+
69
+ /*
70
+ * Set line rotation angle in radians
71
+ * @overload theta=(value)
72
+ * @param value [Number] Line rotation angle
73
+ */
74
+ VALUE
75
+ rb_set_theta(VALUE self, VALUE theta)
76
+ {
77
+ CVLINE(self)->theta = NUM2DBL(theta);
78
+ return self;
79
+ }
80
+
81
+ /*
82
+ * Returns value of rho, theta
83
+ * @overload [](index)
84
+ * @param index [Integer] Index
85
+ * @return [Number] If index = 0, returns rho, else if index = 1, returns theta.
86
+ */
87
+ VALUE
88
+ rb_aref(VALUE self, VALUE index)
89
+ {
90
+ switch (NUM2INT(index)) {
91
+ case 0:
92
+ return DBL2NUM(CVLINE(self)->rho);
93
+ break;
94
+ case 1:
95
+ return DBL2NUM(CVLINE(self)->theta);
96
+ break;
97
+ default:
98
+ rb_raise(rb_eIndexError, "index should be 0...2");
99
+ break;
100
+ }
101
+ return Qnil;
102
+ }
103
+
104
+ /*
105
+ * Set value of rho, theta
106
+ * @overload []=(index, value)
107
+ * @param index [Integer] Index
108
+ * @param value [Number] Value
109
+ * @return [Number] If index = 0, set rho, else if index = 1, set theta.
110
+ */
111
+ VALUE
112
+ rb_aset(VALUE self, VALUE index, VALUE value)
113
+ {
114
+ switch (NUM2INT(index)) {
115
+ case 0:
116
+ CVLINE(self)->rho = NUM2DBL(value);
117
+ break;
118
+ case 1:
119
+ CVLINE(self)->theta = NUM2DBL(value);
120
+ break;
121
+ default:
122
+ rb_raise(rb_eIndexError, "index should be 0...2");
123
+ break;
124
+ }
125
+ return value;
126
+ }
127
+
128
+ VALUE
129
+ new_object(CvLine line)
130
+ {
131
+ VALUE object = rb_allocate(rb_klass);
132
+ *CVLINE(object) = line;
133
+ return object;
134
+ }
135
+
136
+ void
137
+ init_ruby_class()
138
+ {
139
+ #if 0
140
+ // For documentation using YARD
141
+ VALUE opencv = rb_define_module("OpenCV");
142
+ #endif
143
+
144
+ if (rb_klass)
145
+ return;
146
+ VALUE opencv = rb_module_opencv();
147
+
148
+ rb_klass = rb_define_class_under(opencv, "CvLine", rb_cObject);
149
+ rb_define_alloc_func(rb_klass, rb_allocate);
150
+ rb_define_method(rb_klass, "rho", RUBY_METHOD_FUNC(rb_rho), 0);
151
+ rb_define_method(rb_klass, "rho=", RUBY_METHOD_FUNC(rb_set_rho), 1);
152
+ rb_define_method(rb_klass, "theta", RUBY_METHOD_FUNC(rb_theta), 0);
153
+ rb_define_method(rb_klass, "theta=", RUBY_METHOD_FUNC(rb_set_theta), 1);
154
+ rb_define_method(rb_klass, "[]", RUBY_METHOD_FUNC(rb_aref), 1);
155
+ rb_define_method(rb_klass, "[]=", RUBY_METHOD_FUNC(rb_aset), 2);
156
+ }
157
+
158
+ __NAMESPACE_END_CVLINE
159
+ __NAMESPACE_END_OPENCV