ruby-opencv 0.0.10-i386-mingw32

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 (231) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +26 -0
  3. data/DEVELOPERS_NOTE.md +137 -0
  4. data/Gemfile +8 -0
  5. data/History.txt +5 -0
  6. data/License.txt +30 -0
  7. data/Manifest.txt +227 -0
  8. data/README.md +98 -0
  9. data/Rakefile +90 -0
  10. data/config.yml +7 -0
  11. data/examples/alpha_blend.rb +21 -0
  12. data/examples/box.png +0 -0
  13. data/examples/box_in_scene.png +0 -0
  14. data/examples/contours/bitmap-contours-with-labels.png +0 -0
  15. data/examples/contours/bitmap-contours.png +0 -0
  16. data/examples/contours/bounding-box-detect-canny.rb +62 -0
  17. data/examples/contours/contour_retrieval_modes.rb +139 -0
  18. data/examples/contours/rotated-boxes.jpg +0 -0
  19. data/examples/convexhull.rb +47 -0
  20. data/examples/face_detect.rb +20 -0
  21. data/examples/find_obj.rb +169 -0
  22. data/examples/houghcircle.rb +22 -0
  23. data/examples/inpaint.png +0 -0
  24. data/examples/inpaint.rb +57 -0
  25. data/examples/lenna-rotated.jpg +0 -0
  26. data/examples/lenna.jpg +0 -0
  27. data/examples/match_kdtree.rb +88 -0
  28. data/examples/matching_to_many_images.rb +16 -0
  29. data/examples/matching_to_many_images/query.png +0 -0
  30. data/examples/matching_to_many_images/train/1.png +0 -0
  31. data/examples/matching_to_many_images/train/2.png +0 -0
  32. data/examples/matching_to_many_images/train/3.png +0 -0
  33. data/examples/matching_to_many_images/train/trainImages.txt +3 -0
  34. data/examples/paint.rb +70 -0
  35. data/examples/snake.rb +43 -0
  36. data/examples/stuff.jpg +0 -0
  37. data/examples/tiffany.jpg +0 -0
  38. data/ext/opencv/curve.cpp +112 -0
  39. data/ext/opencv/curve.h +34 -0
  40. data/ext/opencv/cvavgcomp.cpp +67 -0
  41. data/ext/opencv/cvavgcomp.h +39 -0
  42. data/ext/opencv/cvbox2d.cpp +197 -0
  43. data/ext/opencv/cvbox2d.h +61 -0
  44. data/ext/opencv/cvcapture.cpp +506 -0
  45. data/ext/opencv/cvcapture.h +72 -0
  46. data/ext/opencv/cvchain.cpp +233 -0
  47. data/ext/opencv/cvchain.h +46 -0
  48. data/ext/opencv/cvcircle32f.cpp +116 -0
  49. data/ext/opencv/cvcircle32f.h +52 -0
  50. data/ext/opencv/cvcondensation.cpp +282 -0
  51. data/ext/opencv/cvcondensation.h +49 -0
  52. data/ext/opencv/cvconnectedcomp.cpp +143 -0
  53. data/ext/opencv/cvconnectedcomp.h +49 -0
  54. data/ext/opencv/cvcontour.cpp +296 -0
  55. data/ext/opencv/cvcontour.h +48 -0
  56. data/ext/opencv/cvcontourtree.cpp +91 -0
  57. data/ext/opencv/cvcontourtree.h +41 -0
  58. data/ext/opencv/cvconvexitydefect.cpp +103 -0
  59. data/ext/opencv/cvconvexitydefect.h +42 -0
  60. data/ext/opencv/cverror.cpp +159 -0
  61. data/ext/opencv/cverror.h +28 -0
  62. data/ext/opencv/cvfeaturetree.cpp +125 -0
  63. data/ext/opencv/cvfeaturetree.h +55 -0
  64. data/ext/opencv/cvfont.cpp +208 -0
  65. data/ext/opencv/cvfont.h +64 -0
  66. data/ext/opencv/cvhaarclassifiercascade.cpp +168 -0
  67. data/ext/opencv/cvhaarclassifiercascade.h +39 -0
  68. data/ext/opencv/cvhistogram.cpp +546 -0
  69. data/ext/opencv/cvhistogram.h +73 -0
  70. data/ext/opencv/cvhumoments.cpp +139 -0
  71. data/ext/opencv/cvhumoments.h +51 -0
  72. data/ext/opencv/cvline.cpp +154 -0
  73. data/ext/opencv/cvline.h +54 -0
  74. data/ext/opencv/cvmat.cpp +5848 -0
  75. data/ext/opencv/cvmat.h +284 -0
  76. data/ext/opencv/cvmatnd.cpp +44 -0
  77. data/ext/opencv/cvmatnd.h +28 -0
  78. data/ext/opencv/cvmemstorage.cpp +68 -0
  79. data/ext/opencv/cvmemstorage.h +53 -0
  80. data/ext/opencv/cvmoments.cpp +287 -0
  81. data/ext/opencv/cvmoments.h +75 -0
  82. data/ext/opencv/cvpoint.cpp +228 -0
  83. data/ext/opencv/cvpoint.h +64 -0
  84. data/ext/opencv/cvpoint2d32f.cpp +211 -0
  85. data/ext/opencv/cvpoint2d32f.h +63 -0
  86. data/ext/opencv/cvpoint3d32f.cpp +245 -0
  87. data/ext/opencv/cvpoint3d32f.h +66 -0
  88. data/ext/opencv/cvrect.cpp +333 -0
  89. data/ext/opencv/cvrect.h +79 -0
  90. data/ext/opencv/cvscalar.cpp +236 -0
  91. data/ext/opencv/cvscalar.h +71 -0
  92. data/ext/opencv/cvseq.cpp +599 -0
  93. data/ext/opencv/cvseq.h +74 -0
  94. data/ext/opencv/cvsize.cpp +221 -0
  95. data/ext/opencv/cvsize.h +65 -0
  96. data/ext/opencv/cvsize2d32f.cpp +209 -0
  97. data/ext/opencv/cvsize2d32f.h +64 -0
  98. data/ext/opencv/cvslice.cpp +120 -0
  99. data/ext/opencv/cvslice.h +61 -0
  100. data/ext/opencv/cvsparsemat.cpp +44 -0
  101. data/ext/opencv/cvsparsemat.h +28 -0
  102. data/ext/opencv/cvsurfparams.cpp +199 -0
  103. data/ext/opencv/cvsurfparams.h +58 -0
  104. data/ext/opencv/cvsurfpoint.cpp +223 -0
  105. data/ext/opencv/cvsurfpoint.h +52 -0
  106. data/ext/opencv/cvtermcriteria.cpp +192 -0
  107. data/ext/opencv/cvtermcriteria.h +71 -0
  108. data/ext/opencv/cvtwopoints.cpp +116 -0
  109. data/ext/opencv/cvtwopoints.h +51 -0
  110. data/ext/opencv/cvutils.cpp +192 -0
  111. data/ext/opencv/cvutils.h +30 -0
  112. data/ext/opencv/cvvideowriter.cpp +137 -0
  113. data/ext/opencv/cvvideowriter.h +43 -0
  114. data/ext/opencv/extconf.rb +83 -0
  115. data/ext/opencv/gui.cpp +68 -0
  116. data/ext/opencv/gui.h +30 -0
  117. data/ext/opencv/iplconvkernel.cpp +192 -0
  118. data/ext/opencv/iplconvkernel.h +71 -0
  119. data/ext/opencv/iplimage.cpp +644 -0
  120. data/ext/opencv/iplimage.h +73 -0
  121. data/ext/opencv/mouseevent.cpp +181 -0
  122. data/ext/opencv/mouseevent.h +56 -0
  123. data/ext/opencv/opencv.cpp +727 -0
  124. data/ext/opencv/opencv.h +400 -0
  125. data/ext/opencv/pointset.cpp +274 -0
  126. data/ext/opencv/pointset.h +68 -0
  127. data/ext/opencv/trackbar.cpp +121 -0
  128. data/ext/opencv/trackbar.h +69 -0
  129. data/ext/opencv/window.cpp +357 -0
  130. data/ext/opencv/window.h +66 -0
  131. data/images/CvMat_sobel.png +0 -0
  132. data/images/CvMat_sub_rect.png +0 -0
  133. data/images/CvSeq_relationmap.png +0 -0
  134. data/images/face_detect_from_lena.jpg +0 -0
  135. data/lib/1.9/opencv.so +0 -0
  136. data/lib/2.0/opencv.so +0 -0
  137. data/lib/opencv.rb +12 -0
  138. data/lib/opencv/psyched_yaml.rb +22 -0
  139. data/lib/opencv/version.rb +3 -0
  140. data/ruby-opencv.gemspec +44 -0
  141. data/test/helper.rb +166 -0
  142. data/test/runner.rb +30 -0
  143. data/test/samples/airplane.jpg +0 -0
  144. data/test/samples/baboon.jpg +0 -0
  145. data/test/samples/baboon200.jpg +0 -0
  146. data/test/samples/baboon200_rotated.jpg +0 -0
  147. data/test/samples/blank0.jpg +0 -0
  148. data/test/samples/blank1.jpg +0 -0
  149. data/test/samples/blank2.jpg +0 -0
  150. data/test/samples/blank3.jpg +0 -0
  151. data/test/samples/blank4.jpg +0 -0
  152. data/test/samples/blank5.jpg +0 -0
  153. data/test/samples/blank6.jpg +0 -0
  154. data/test/samples/blank7.jpg +0 -0
  155. data/test/samples/blank8.jpg +0 -0
  156. data/test/samples/blank9.jpg +0 -0
  157. data/test/samples/cat.jpg +0 -0
  158. data/test/samples/chessboard.jpg +0 -0
  159. data/test/samples/contours.jpg +0 -0
  160. data/test/samples/fruits.jpg +0 -0
  161. data/test/samples/haarcascade_frontalface_alt.xml.gz +0 -0
  162. data/test/samples/inpaint-mask.bmp +0 -0
  163. data/test/samples/lena-256x256.jpg +0 -0
  164. data/test/samples/lena-32x32.jpg +0 -0
  165. data/test/samples/lena-eyes.jpg +0 -0
  166. data/test/samples/lena-inpaint.jpg +0 -0
  167. data/test/samples/lena.jpg +0 -0
  168. data/test/samples/lines.jpg +0 -0
  169. data/test/samples/messy0.jpg +0 -0
  170. data/test/samples/messy1.jpg +0 -0
  171. data/test/samples/movie_sample.avi +0 -0
  172. data/test/samples/one_way_train_0000.jpg +0 -0
  173. data/test/samples/one_way_train_0001.jpg +0 -0
  174. data/test/samples/partially_blank0.jpg +0 -0
  175. data/test/samples/partially_blank1.jpg +0 -0
  176. data/test/samples/smooth0.jpg +0 -0
  177. data/test/samples/smooth1.jpg +0 -0
  178. data/test/samples/smooth2.jpg +0 -0
  179. data/test/samples/smooth3.jpg +0 -0
  180. data/test/samples/smooth4.jpg +0 -0
  181. data/test/samples/smooth5.jpg +0 -0
  182. data/test/samples/smooth6.jpg +0 -0
  183. data/test/samples/str-cv-rotated.jpg +0 -0
  184. data/test/samples/str-cv.jpg +0 -0
  185. data/test/samples/str-ov.jpg +0 -0
  186. data/test/samples/stuff.jpg +0 -0
  187. data/test/test_curve.rb +43 -0
  188. data/test/test_cvavgcomp.rb +24 -0
  189. data/test/test_cvbox2d.rb +76 -0
  190. data/test/test_cvcapture.rb +183 -0
  191. data/test/test_cvchain.rb +108 -0
  192. data/test/test_cvcircle32f.rb +41 -0
  193. data/test/test_cvconnectedcomp.rb +61 -0
  194. data/test/test_cvcontour.rb +150 -0
  195. data/test/test_cvcontourtree.rb +43 -0
  196. data/test/test_cverror.rb +50 -0
  197. data/test/test_cvfeaturetree.rb +65 -0
  198. data/test/test_cvfont.rb +58 -0
  199. data/test/test_cvhaarclassifiercascade.rb +63 -0
  200. data/test/test_cvhistogram.rb +271 -0
  201. data/test/test_cvhumoments.rb +83 -0
  202. data/test/test_cvline.rb +50 -0
  203. data/test/test_cvmat.rb +2947 -0
  204. data/test/test_cvmat_drawing.rb +349 -0
  205. data/test/test_cvmat_dxt.rb +150 -0
  206. data/test/test_cvmat_imageprocessing.rb +2015 -0
  207. data/test/test_cvmat_matching.rb +57 -0
  208. data/test/test_cvmoments.rb +180 -0
  209. data/test/test_cvpoint.rb +75 -0
  210. data/test/test_cvpoint2d32f.rb +75 -0
  211. data/test/test_cvpoint3d32f.rb +93 -0
  212. data/test/test_cvrect.rb +144 -0
  213. data/test/test_cvscalar.rb +113 -0
  214. data/test/test_cvseq.rb +295 -0
  215. data/test/test_cvsize.rb +75 -0
  216. data/test/test_cvsize2d32f.rb +75 -0
  217. data/test/test_cvslice.rb +31 -0
  218. data/test/test_cvsurfparams.rb +57 -0
  219. data/test/test_cvsurfpoint.rb +66 -0
  220. data/test/test_cvtermcriteria.rb +56 -0
  221. data/test/test_cvtwopoints.rb +40 -0
  222. data/test/test_cvvideowriter.rb +58 -0
  223. data/test/test_iplconvkernel.rb +54 -0
  224. data/test/test_iplimage.rb +236 -0
  225. data/test/test_mouseevent.rb +17 -0
  226. data/test/test_opencv.rb +329 -0
  227. data/test/test_pointset.rb +126 -0
  228. data/test/test_preliminary.rb +130 -0
  229. data/test/test_trackbar.rb +47 -0
  230. data/test/test_window.rb +115 -0
  231. metadata +386 -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 define_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,139 @@
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
+ * moments
16
+ */
17
+ __NAMESPACE_BEGIN_OPENCV
18
+ __NAMESPACE_BEGIN_CVHUMOMENTS
19
+
20
+ #define DEFINE_CVHUMOMENTS_GETTER(elem) \
21
+ rb_define_method(rb_klass, #elem, RUBY_METHOD_FUNC(rb_##elem), 0)
22
+
23
+ #define CVHUMOMENTS_GETTER(elem) \
24
+ VALUE rb_##elem(VALUE self) { return DBL2NUM(CVHUMOMENTS(self)->elem); }
25
+
26
+ VALUE rb_klass;
27
+
28
+ VALUE
29
+ rb_class()
30
+ {
31
+ return rb_klass;
32
+ }
33
+
34
+ void
35
+ define_ruby_class()
36
+ {
37
+ if (rb_klass)
38
+ return;
39
+ /*
40
+ * opencv = rb_define_module("OpenCV");
41
+ *
42
+ * note: this comment is used by rdoc.
43
+ */
44
+ VALUE opencv = rb_module_opencv();
45
+
46
+ rb_klass = rb_define_class_under(opencv, "CvHuMoments", rb_cObject);
47
+ rb_define_alloc_func(rb_klass, rb_allocate);
48
+ rb_define_private_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), 1);
49
+ rb_define_method(rb_klass, "to_ary", RUBY_METHOD_FUNC(rb_to_ary), 0);
50
+ rb_define_alias(rb_klass, "to_a", "to_ary");
51
+
52
+ DEFINE_CVHUMOMENTS_GETTER(hu1);
53
+ DEFINE_CVHUMOMENTS_GETTER(hu2);
54
+ DEFINE_CVHUMOMENTS_GETTER(hu3);
55
+ DEFINE_CVHUMOMENTS_GETTER(hu4);
56
+ DEFINE_CVHUMOMENTS_GETTER(hu5);
57
+ DEFINE_CVHUMOMENTS_GETTER(hu6);
58
+ DEFINE_CVHUMOMENTS_GETTER(hu7);
59
+ }
60
+
61
+ VALUE
62
+ rb_allocate(VALUE klass)
63
+ {
64
+ CvHuMoments *ptr;
65
+ return Data_Make_Struct(klass, CvHuMoments, 0, -1, ptr);
66
+ }
67
+
68
+ /*
69
+ * call-seq:
70
+ * CvHuMoments.new(<i>src_moments</i>)
71
+ *
72
+ * Calculates the seven Hu invariants.
73
+ * <i>src_moments</i> The input moments
74
+ *
75
+ * seven Hu invariants that are defined as:
76
+ * h1=η20+η02
77
+ * h2=(η20-η02)²+4η11²
78
+ * h3=(η30-3η12)²+ (3η21-η03)²
79
+ * h4=(η30+η12)²+ (η21+η03)²
80
+ * h5=(η30-3η12)(η30+η12)[(η30+η12)²-3(η21+η03)²]+(3η21-η03)(η21+η03)[3(η30+η12)²-(η21+η03)²]
81
+ * h6=(η20-η02)[(η30+η12)²- (η21+η03)²]+4η11(η30+η12)(η21+η03)
82
+ * h7=(3η21-η03)(η21+η03)[3(η30+η12)²-(η21+η03)²]-(η30-3η12)(η21+η03)[3(η30+η12)²-(η21+η03)²]
83
+ * where ηi,j are normalized central moments of 2-nd and 3-rd orders. The computed values are proved to be invariant to the image scaling, rotation, and reflection except the seventh one, whose sign is changed by reflection.
84
+ */
85
+ VALUE
86
+ rb_initialize(VALUE self, VALUE src_moments)
87
+ {
88
+ try {
89
+ cvGetHuMoments(CVMOMENTS(src_moments), CVHUMOMENTS(self));
90
+ }
91
+ catch (cv::Exception& e) {
92
+ raise_cverror(e);
93
+ }
94
+ return self;
95
+ }
96
+
97
+ CVHUMOMENTS_GETTER(hu1);
98
+ CVHUMOMENTS_GETTER(hu2);
99
+ CVHUMOMENTS_GETTER(hu3);
100
+ CVHUMOMENTS_GETTER(hu4);
101
+ CVHUMOMENTS_GETTER(hu5);
102
+ CVHUMOMENTS_GETTER(hu6);
103
+ CVHUMOMENTS_GETTER(hu7);
104
+
105
+ /*
106
+ * call-seq:
107
+ * to_ary -> [hu1, hu2, ... ,hu7]
108
+ *
109
+ * Return values by Array.
110
+ */
111
+ VALUE
112
+ rb_to_ary(VALUE self)
113
+ {
114
+ CvHuMoments *hu_moments = CVHUMOMENTS(self);
115
+ return rb_ary_new3(7,
116
+ rb_float_new(hu_moments->hu1),
117
+ rb_float_new(hu_moments->hu2),
118
+ rb_float_new(hu_moments->hu3),
119
+ rb_float_new(hu_moments->hu4),
120
+ rb_float_new(hu_moments->hu5),
121
+ rb_float_new(hu_moments->hu6),
122
+ rb_float_new(hu_moments->hu7));
123
+ }
124
+
125
+ VALUE
126
+ new_object(CvMoments *src_moments)
127
+ {
128
+ VALUE object = rb_allocate(rb_klass);
129
+ try {
130
+ cvGetHuMoments(src_moments, CVHUMOMENTS(object));
131
+ }
132
+ catch (cv::Exception& e) {
133
+ raise_cverror(e);
134
+ }
135
+ return object;
136
+ }
137
+
138
+ __NAMESPACE_END_CVHUMOMENTS
139
+ __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 define_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,154 @@
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
+ */
15
+ __NAMESPACE_BEGIN_OPENCV
16
+ __NAMESPACE_BEGIN_CVLINE
17
+
18
+ VALUE rb_klass;
19
+
20
+ VALUE
21
+ rb_class()
22
+ {
23
+ return rb_klass;
24
+ }
25
+
26
+ void
27
+ define_ruby_class()
28
+ {
29
+ if (rb_klass)
30
+ return;
31
+ /*
32
+ * opencv = rb_define_module("OpenCV");
33
+ *
34
+ * note: this comment is used by rdoc.
35
+ */
36
+ VALUE opencv = rb_module_opencv();
37
+
38
+ rb_klass = rb_define_class_under(opencv, "CvLine", rb_cObject);
39
+ rb_define_alloc_func(rb_klass, rb_allocate);
40
+ rb_define_method(rb_klass, "rho", RUBY_METHOD_FUNC(rb_rho), 0);
41
+ rb_define_method(rb_klass, "rho=", RUBY_METHOD_FUNC(rb_set_rho), 1);
42
+ rb_define_method(rb_klass, "theta", RUBY_METHOD_FUNC(rb_theta), 0);
43
+ rb_define_method(rb_klass, "theta=", RUBY_METHOD_FUNC(rb_set_theta), 1);
44
+ rb_define_method(rb_klass, "[]", RUBY_METHOD_FUNC(rb_aref), 1);
45
+ rb_define_method(rb_klass, "[]=", RUBY_METHOD_FUNC(rb_aset), 2);
46
+ }
47
+
48
+ VALUE
49
+ rb_allocate(VALUE klass)
50
+ {
51
+ CvLine *ptr;
52
+ return Data_Make_Struct(klass, CvLine, 0, -1, ptr);
53
+ }
54
+
55
+ /*
56
+ * Return parameter on rho.
57
+ */
58
+ VALUE
59
+ rb_rho(VALUE self)
60
+ {
61
+ return rb_float_new(CVLINE(self)->rho);
62
+ }
63
+
64
+ /*
65
+ * call-seq:
66
+ * rho = val
67
+ *
68
+ * Set rho parameter, return self.
69
+ */
70
+ VALUE
71
+ rb_set_rho(VALUE self, VALUE rho)
72
+ {
73
+ CVLINE(self)->rho = NUM2DBL(rho);
74
+ return self;
75
+ }
76
+
77
+ /*
78
+ * Return parameter on theta.
79
+ */
80
+ VALUE
81
+ rb_theta(VALUE self)
82
+ {
83
+ return rb_float_new(CVLINE(self)->theta);
84
+ }
85
+
86
+ /*
87
+ * call-seq:
88
+ * y = val
89
+ *
90
+ * Set theta parameter, return self.
91
+ */
92
+ VALUE
93
+ rb_set_theta(VALUE self, VALUE theta)
94
+ {
95
+ CVLINE(self)->theta = NUM2DBL(theta);
96
+ return self;
97
+ }
98
+
99
+ /*
100
+ * call-seq:
101
+ * [<i>index</i>]
102
+ *
103
+ * Return value of <i>index</i> dimension.
104
+ */
105
+ VALUE
106
+ rb_aref(VALUE self, VALUE index)
107
+ {
108
+ switch (NUM2INT(index)) {
109
+ case 0:
110
+ return DBL2NUM(CVLINE(self)->rho);
111
+ break;
112
+ case 1:
113
+ return DBL2NUM(CVLINE(self)->theta);
114
+ break;
115
+ default:
116
+ rb_raise(rb_eIndexError, "index should be 0...2");
117
+ break;
118
+ }
119
+ return Qnil;
120
+ }
121
+
122
+ /*
123
+ * call-seq:
124
+ * [<i>index</i>] = <i>value</i>
125
+ *
126
+ * Set value of <i>index</i> dimension to <i>value</i>
127
+ */
128
+ VALUE
129
+ rb_aset(VALUE self, VALUE index, VALUE value)
130
+ {
131
+ switch (NUM2INT(index)) {
132
+ case 0:
133
+ CVLINE(self)->rho = NUM2DBL(value);
134
+ break;
135
+ case 1:
136
+ CVLINE(self)->theta = NUM2DBL(value);
137
+ break;
138
+ default:
139
+ rb_raise(rb_eIndexError, "index should be 0...2");
140
+ break;
141
+ }
142
+ return value;
143
+ }
144
+
145
+ VALUE
146
+ new_object(CvLine line)
147
+ {
148
+ VALUE object = rb_allocate(rb_klass);
149
+ *CVLINE(object) = line;
150
+ return object;
151
+ }
152
+
153
+ __NAMESPACE_END_CVLINE
154
+ __NAMESPACE_END_OPENCV
@@ -0,0 +1,54 @@
1
+ /************************************************************
2
+
3
+ cvline.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2007 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVLINE_H
11
+ #define RUBY_OPENCV_CVLINE_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVLINE namespace cCvLine {
16
+ #define __NAMESPACE_END_CVLINE }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+
20
+ typedef struct CvLine {
21
+ float rho;
22
+ float theta;
23
+ } CvLine;
24
+
25
+ __NAMESPACE_BEGIN_CVLINE
26
+
27
+ VALUE rb_class();
28
+
29
+ void define_ruby_class();
30
+
31
+ VALUE rb_allocate(VALUE klass);
32
+ VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
33
+ VALUE rb_rho(VALUE self);
34
+ VALUE rb_set_rho(VALUE self, VALUE rho);
35
+ VALUE rb_theta(VALUE self);
36
+ VALUE rb_set_theta(VALUE self, VALUE theta);
37
+ VALUE rb_aref(VALUE self, VALUE index);
38
+ VALUE rb_aset(VALUE self, VALUE index, VALUE value);
39
+
40
+ VALUE new_object(CvLine line);
41
+
42
+ __NAMESPACE_END_CVLINE
43
+
44
+ inline CvLine*
45
+ CVLINE(VALUE object)
46
+ {
47
+ CvLine *ptr;
48
+ Data_Get_Struct(object, CvLine, ptr);
49
+ return ptr;
50
+ }
51
+
52
+ __NAMESPACE_END_OPENCV
53
+
54
+ #endif // RUBY_OPENCV_CVLINE_H