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,43 @@
1
+ #!/usr/bin/env ruby
2
+ # snake.rb
3
+ require "rubygems"
4
+ require "opencv"
5
+ include OpenCV
6
+
7
+ puts <<USAGE
8
+ usage:
9
+ left-click: set a point
10
+ right-click: do snake
11
+ USAGE
12
+
13
+ window = GUI::Window.new "snake demo"
14
+ image = CvMat.new(256, 256, :cv8u, 1).clear!
15
+ image.circle!(CvPoint.new(128,128), 40, color: CvColor::White, thickness: -1)
16
+ display = image.GRAY2BGR
17
+
18
+ window.show display
19
+
20
+ points = []
21
+
22
+ window.on_mouse{|mouse|
23
+ case mouse.event
24
+ when :left_button_down
25
+ display.circle!(mouse, 1, color: CvColor::Red, thickness: 2)
26
+ puts "set point (#{mouse.x},#{mouse.y})"
27
+ points << CvPoint.new(mouse.x, mouse.y)
28
+ window.show display
29
+ when :right_button_down
30
+ if points.length < 3
31
+ puts "please set more point!"
32
+ next
33
+ end
34
+ snake_points = image.snake_image(points, 1.0, 0.5, 1.5, CvSize.new(3, 3), 100)
35
+ display = image.GRAY2BGR
36
+ display.poly_line!([snake_points], color: CvColor::Red, is_closed: true, thickness: 2)
37
+ window.show display
38
+ points.clear
39
+ end
40
+ }
41
+
42
+ GUI::wait_key
43
+
@@ -0,0 +1,291 @@
1
+ /************************************************************
2
+
3
+ algorithm.cpp -
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2013 ser1zw
8
+
9
+ ************************************************************/
10
+ #include <stdio.h>
11
+ #include "algorithm.h"
12
+ /*
13
+ * Document-class: OpenCV::Algorithm
14
+ *
15
+ */
16
+ __NAMESPACE_BEGIN_OPENCV
17
+ __NAMESPACE_BEGIN_ALGORITHM
18
+
19
+ VALUE rb_klass;
20
+
21
+ VALUE
22
+ rb_class()
23
+ {
24
+ return rb_klass;
25
+ }
26
+
27
+ VALUE
28
+ rb_set_int(VALUE self, VALUE parameter, VALUE value)
29
+ {
30
+ Check_Type(parameter, T_STRING);
31
+ try {
32
+ ALGORITHM(self)->setInt(StringValueCStr(parameter), NUM2INT(value));
33
+ }
34
+ catch (cv::Exception& e) {
35
+ raise_cverror(e);
36
+ }
37
+
38
+ return Qnil;
39
+ }
40
+
41
+ VALUE
42
+ rb_set_double(VALUE self, VALUE parameter, VALUE value)
43
+ {
44
+ Check_Type(parameter, T_STRING);
45
+ try {
46
+ ALGORITHM(self)->setDouble(StringValueCStr(parameter), NUM2DBL(value));
47
+ }
48
+ catch (cv::Exception& e) {
49
+ raise_cverror(e);
50
+ }
51
+
52
+ return Qnil;
53
+ }
54
+
55
+ VALUE
56
+ rb_set_bool(VALUE self, VALUE parameter, VALUE value)
57
+ {
58
+ Check_Type(parameter, T_STRING);
59
+ try {
60
+ bool val = TRUE_OR_FALSE(value) ? true : false;
61
+ ALGORITHM(self)->setBool(StringValueCStr(parameter), val);
62
+ }
63
+ catch (cv::Exception& e) {
64
+ raise_cverror(e);
65
+ }
66
+
67
+ return Qnil;
68
+ }
69
+
70
+ VALUE
71
+ rb_set_string(VALUE self, VALUE parameter, VALUE value)
72
+ {
73
+ Check_Type(parameter, T_STRING);
74
+ Check_Type(value, T_STRING);
75
+ try {
76
+ ALGORITHM(self)->setString(StringValueCStr(parameter), StringValueCStr(value));
77
+ }
78
+ catch (cv::Exception& e) {
79
+ raise_cverror(e);
80
+ }
81
+
82
+ return Qnil;
83
+ }
84
+
85
+ VALUE
86
+ rb_set_mat(VALUE self, VALUE parameter, VALUE value)
87
+ {
88
+ Check_Type(parameter, T_STRING);
89
+ try {
90
+ CvMat* val = CVMAT_WITH_CHECK(value);
91
+ cv::Mat mat(val);
92
+ ALGORITHM(self)->setMat(StringValueCStr(parameter), mat);
93
+ }
94
+ catch (cv::Exception& e) {
95
+ raise_cverror(e);
96
+ }
97
+
98
+ return Qnil;
99
+ }
100
+
101
+ VALUE
102
+ rb_set_matvector(VALUE self, VALUE parameter, VALUE value)
103
+ {
104
+ Check_Type(parameter, T_STRING);
105
+ Check_Type(value, T_ARRAY);
106
+ try {
107
+ long len = RARRAY_LEN(value);
108
+ VALUE* value_ptr = RARRAY_PTR(value);
109
+ std::vector<cv::Mat> mat_vector;
110
+ for (int i = 0; i < len; i++) {
111
+ CvMat* val = CVMAT_WITH_CHECK(value_ptr[i]);
112
+ cv::Mat mat(val);
113
+ mat_vector.push_back(mat);
114
+ }
115
+ ALGORITHM(self)->setMatVector(StringValueCStr(parameter), mat_vector);
116
+ }
117
+ catch (cv::Exception& e) {
118
+ raise_cverror(e);
119
+ }
120
+
121
+ return Qnil;
122
+ }
123
+
124
+ VALUE
125
+ rb_set_algorithm(VALUE self, VALUE parameter, VALUE value)
126
+ {
127
+ Check_Type(parameter, T_STRING);
128
+ try {
129
+ ALGORITHM(self)->setAlgorithm(StringValueCStr(parameter), ALGORITHM(value));
130
+ }
131
+ catch (cv::Exception& e) {
132
+ raise_cverror(e);
133
+ }
134
+
135
+ return Qnil;
136
+ }
137
+
138
+
139
+ VALUE
140
+ rb_get_int(VALUE self, VALUE parameter)
141
+ {
142
+ Check_Type(parameter, T_STRING);
143
+ int value = 0;
144
+ try {
145
+ value = ALGORITHM(self)->getInt(StringValueCStr(parameter));
146
+ }
147
+ catch (cv::Exception& e) {
148
+ raise_cverror(e);
149
+ }
150
+
151
+ return INT2NUM(value);
152
+ }
153
+
154
+ VALUE
155
+ rb_get_double(VALUE self, VALUE parameter)
156
+ {
157
+ Check_Type(parameter, T_STRING);
158
+ double value = 0.0;
159
+ try {
160
+ value = ALGORITHM(self)->getDouble(StringValueCStr(parameter));
161
+ }
162
+ catch (cv::Exception& e) {
163
+ raise_cverror(e);
164
+ }
165
+
166
+ return DBL2NUM(value);
167
+ }
168
+
169
+ VALUE
170
+ rb_get_bool(VALUE self, VALUE parameter)
171
+ {
172
+ Check_Type(parameter, T_STRING);
173
+ bool value = false;
174
+ try {
175
+ value = ALGORITHM(self)->getBool(StringValueCStr(parameter));
176
+ }
177
+ catch (cv::Exception& e) {
178
+ raise_cverror(e);
179
+ }
180
+
181
+ return value ? Qtrue : Qfalse;
182
+ }
183
+
184
+ VALUE
185
+ rb_get_string(VALUE self, VALUE parameter)
186
+ {
187
+ Check_Type(parameter, T_STRING);
188
+ std::string value = "";
189
+ try {
190
+ value = ALGORITHM(self)->getString(StringValueCStr(parameter));
191
+ }
192
+ catch (cv::Exception& e) {
193
+ raise_cverror(e);
194
+ }
195
+
196
+ return rb_str_new_cstr(value.c_str());
197
+ }
198
+
199
+ VALUE
200
+ rb_get_mat(VALUE self, VALUE parameter)
201
+ {
202
+ Check_Type(parameter, T_STRING);
203
+ VALUE mat = Qnil;
204
+ try {
205
+ cv::Mat value = ALGORITHM(self)->getMat(StringValueCStr(parameter));
206
+ cv::Size size = value.size();
207
+ mat = cCvMat::new_object(size.height, size.width, value.type());
208
+ cv::Mat dst(CVMAT(mat));
209
+ value.copyTo(dst);
210
+ }
211
+ catch (cv::Exception& e) {
212
+ raise_cverror(e);
213
+ }
214
+ return mat;
215
+ }
216
+
217
+ VALUE
218
+ rb_get_matvector(VALUE self, VALUE parameter)
219
+ {
220
+ Check_Type(parameter, T_STRING);
221
+ VALUE array = Qnil;
222
+ try {
223
+ std::vector<cv::Mat> value = ALGORITHM(self)->getMatVector(StringValueCStr(parameter));
224
+ int len = value.size();
225
+ array = rb_ary_new2(len);
226
+ for (int i = 0; i < len; i++) {
227
+ cv::Mat m = value[i];
228
+ cv::Size size = m.size();
229
+ VALUE mat = cCvMat::new_object(size.height, size.width, m.type());
230
+ cv::Mat dst(CVMAT(mat));
231
+ m.copyTo(dst);
232
+ rb_ary_store(array, i, mat);
233
+ }
234
+ }
235
+ catch (cv::Exception& e) {
236
+ raise_cverror(e);
237
+ }
238
+ return array;
239
+ }
240
+
241
+ VALUE
242
+ rb_name(VALUE self)
243
+ {
244
+ VALUE name = Qnil;
245
+ try {
246
+ name = rb_str_new_cstr(ALGORITHM(self)->name().c_str());
247
+ }
248
+ catch (cv::Exception& e) {
249
+ raise_cverror(e);
250
+ }
251
+ return name;
252
+ }
253
+
254
+ void
255
+ init_ruby_class()
256
+ {
257
+ #if 0
258
+ // For documentation using YARD
259
+ VALUE opencv = rb_define_module("OpenCV");
260
+ #endif
261
+
262
+ if (rb_klass)
263
+ return;
264
+ /*
265
+ * opencv = rb_define_module("OpenCV");
266
+ *
267
+ * note: this comment is used by rdoc.
268
+ */
269
+ VALUE opencv = rb_module_opencv();
270
+ rb_klass = rb_define_class_under(opencv, "Algorithm", rb_cObject);
271
+ rb_define_method(rb_klass, "set_int", RUBY_METHOD_FUNC(rb_set_int), 2);
272
+ rb_define_method(rb_klass, "set_double", RUBY_METHOD_FUNC(rb_set_double), 2);
273
+ rb_define_method(rb_klass, "set_bool", RUBY_METHOD_FUNC(rb_set_bool), 2);
274
+ rb_define_method(rb_klass, "set_string", RUBY_METHOD_FUNC(rb_set_string), 2);
275
+ rb_define_method(rb_klass, "set_mat", RUBY_METHOD_FUNC(rb_set_mat), 2);
276
+ rb_define_method(rb_klass, "set_matvector", RUBY_METHOD_FUNC(rb_set_matvector), 2);
277
+ rb_define_method(rb_klass, "set_algorithm", RUBY_METHOD_FUNC(rb_set_algorithm), 2);
278
+
279
+ rb_define_method(rb_klass, "get_int", RUBY_METHOD_FUNC(rb_get_int), 1);
280
+ rb_define_method(rb_klass, "get_double", RUBY_METHOD_FUNC(rb_get_double), 1);
281
+ rb_define_method(rb_klass, "get_bool", RUBY_METHOD_FUNC(rb_get_bool), 1);
282
+ rb_define_method(rb_klass, "get_string", RUBY_METHOD_FUNC(rb_get_string), 1);
283
+ rb_define_method(rb_klass, "get_mat", RUBY_METHOD_FUNC(rb_get_mat), 1);
284
+ rb_define_method(rb_klass, "get_matvector", RUBY_METHOD_FUNC(rb_get_matvector), 1);
285
+
286
+ rb_define_method(rb_klass, "name", RUBY_METHOD_FUNC(rb_name), 0);
287
+ }
288
+
289
+ __NAMESPACE_END_ALGORITM
290
+ __NAMESPACE_END_OPENCV
291
+
@@ -0,0 +1,38 @@
1
+ /************************************************************
2
+
3
+ algorithm.h
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2013 ser1zw
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_ALGORITHM_H
11
+ #define RUBY_OPENCV_ALGORITHM_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_ALGORITHM namespace cAlgorithm {
16
+ #define __NAMESPACE_END_ALGORITM }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_ALGORITHM
20
+
21
+ VALUE rb_class();
22
+
23
+ void init_ruby_class();
24
+
25
+ __NAMESPACE_END_ALGORITM
26
+
27
+ inline cv::Algorithm*
28
+ ALGORITHM(VALUE object)
29
+ {
30
+ cv::Algorithm *ptr;
31
+ Data_Get_Struct(object, cv::Algorithm, ptr);
32
+ return ptr;
33
+ }
34
+
35
+ __NAMESPACE_END_OPENCV
36
+
37
+ #endif // RUBY_OPENCV_ALGORITHM_H
38
+
@@ -0,0 +1,127 @@
1
+ /************************************************************
2
+
3
+ curve.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "curve.h"
11
+ /*
12
+ * Document-class: OpenCV::Curve
13
+ *
14
+ * Curve sequence
15
+ */
16
+ __NAMESPACE_BEGIN_OPENCV
17
+ __NAMESPACE_BEGIN_CURVE
18
+
19
+ VALUE module;
20
+
21
+ VALUE
22
+ rb_module()
23
+ {
24
+ return module;
25
+ }
26
+
27
+ /*
28
+ * If the curve is closed, return true. Otherwise return false.
29
+ * @overload closed?
30
+ * @return [Boolean] Closed or not
31
+ * @opencv_func CV_IS_SEQ_CLOSED
32
+ */
33
+ VALUE
34
+ rb_closed_q(VALUE self)
35
+ {
36
+ return CV_IS_SEQ_CLOSED(CVSEQ(self)) ? Qtrue : Qfalse;
37
+ }
38
+
39
+ /*
40
+ * If the curve is convex, return true. Otherwise return false.
41
+ * @overload convex?
42
+ * @return [Boolean] Convex or not
43
+ * @opencv_func CV_IS_SEQ_CONVEX
44
+ */
45
+ VALUE
46
+ rb_convex_q(VALUE self)
47
+ {
48
+ return CV_IS_SEQ_CONVEX(CVSEQ(self)) ? Qtrue : Qfalse;
49
+ }
50
+
51
+ /*
52
+ * If the curve is hole(inner contour), return true. Otherwise return false.
53
+ * @overload hole?
54
+ * @return [Boolean] Hole or not
55
+ * @opencv_func CV_IS_SEQ_HOLE
56
+ */
57
+ VALUE
58
+ rb_hole_q(VALUE self)
59
+ {
60
+ return CV_IS_SEQ_HOLE(CVSEQ(self)) ? Qtrue : Qfalse;
61
+ }
62
+
63
+ /*
64
+ * If the curve is simple, return true. Otherwise return false.
65
+ * @overload simple?
66
+ * @return [Boolean] Simple or not
67
+ * @opencv_func CV_IS_SEQ_SIMPLE
68
+ */
69
+ VALUE
70
+ rb_simple_q(VALUE self)
71
+ {
72
+ return CV_IS_SEQ_SIMPLE(CVSEQ(self)) ? Qtrue : Qfalse;
73
+ }
74
+
75
+ /*
76
+ * Calculates length of a curve
77
+ * @overload arc_length(slice = nil, is_closed = nil)
78
+ * @param slice [Range,CvSlice,nil] Starting and ending points of the curve.
79
+ * By default, the whole curve length is calculated.
80
+ * @param is_closed [Boolean,nil] Indicates whether the curve is closed or not.
81
+ * There are 3 cases:
82
+ * * is_closed = true - the curve is assumed to be unclosed.
83
+ * * is_closed = false - the curve is assumed to be closed.
84
+ * * is_closed = nil (default) use self#closed?
85
+ * @return [Number] Length of the curve
86
+ * @opencv_func cvArcLength
87
+ */
88
+ VALUE
89
+ rb_arc_length(int argc, VALUE *argv, VALUE self)
90
+ {
91
+ VALUE slice, is_closed;
92
+ rb_scan_args(argc, argv, "02", &slice, &is_closed);
93
+ double length = 0;
94
+ try {
95
+ length = cvArcLength(CVARR(self),
96
+ NIL_P(slice) ? CV_WHOLE_SEQ : VALUE_TO_CVSLICE(slice),
97
+ TRUE_OR_FALSE(is_closed, -1));
98
+ }
99
+ catch (cv::Exception& e) {
100
+ raise_cverror(e);
101
+ }
102
+ return rb_float_new(length);
103
+ }
104
+
105
+ void
106
+ init_ruby_module()
107
+ {
108
+ #if 0
109
+ // For documentation using YARD
110
+ VALUE opencv = rb_define_module("OpenCV");
111
+ #endif
112
+
113
+ if (module)
114
+ return;
115
+
116
+ VALUE opencv = rb_module_opencv();
117
+ module = rb_define_module_under(opencv, "Curve");
118
+ rb_define_method(module, "closed?", RUBY_METHOD_FUNC(rb_closed_q), 0);
119
+ rb_define_method(module, "convex?", RUBY_METHOD_FUNC(rb_convex_q), 0);
120
+ rb_define_method(module, "hole?", RUBY_METHOD_FUNC(rb_hole_q), 0);
121
+ rb_define_method(module, "simple?", RUBY_METHOD_FUNC(rb_simple_q), 0);
122
+ rb_define_method(module, "arc_length", RUBY_METHOD_FUNC(rb_arc_length), -1);
123
+ }
124
+
125
+ __NAMESPACE_END_CURVE
126
+ __NAMESPACE_END_OPENCV
127
+