opencv 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/History.txt +5 -0
  2. data/License.txt +30 -0
  3. data/Manifest.txt +115 -0
  4. data/README.txt +47 -0
  5. data/Rakefile +34 -0
  6. data/examples/convexhull.rb +41 -0
  7. data/examples/face_detect.rb +25 -0
  8. data/examples/houghcircle.rb +23 -0
  9. data/examples/inpaint.png +0 -0
  10. data/examples/inpaint.rb +43 -0
  11. data/examples/paint.rb +72 -0
  12. data/examples/snake.rb +43 -0
  13. data/examples/stuff.jpg +0 -0
  14. data/ext/curve.cpp +103 -0
  15. data/ext/curve.h +34 -0
  16. data/ext/cvavgcomp.cpp +67 -0
  17. data/ext/cvavgcomp.h +39 -0
  18. data/ext/cvbox2d.cpp +114 -0
  19. data/ext/cvbox2d.h +53 -0
  20. data/ext/cvcapture.cpp +276 -0
  21. data/ext/cvcapture.h +54 -0
  22. data/ext/cvchain.cpp +184 -0
  23. data/ext/cvchain.h +43 -0
  24. data/ext/cvchaincode.cpp +49 -0
  25. data/ext/cvchaincode.h +43 -0
  26. data/ext/cvcircle32f.cpp +90 -0
  27. data/ext/cvcircle32f.h +53 -0
  28. data/ext/cvcondensation.cpp +230 -0
  29. data/ext/cvcondensation.h +49 -0
  30. data/ext/cvconnectedcomp.cpp +115 -0
  31. data/ext/cvconnectedcomp.h +46 -0
  32. data/ext/cvcontour.cpp +219 -0
  33. data/ext/cvcontour.h +47 -0
  34. data/ext/cvcontourtree.cpp +86 -0
  35. data/ext/cvcontourtree.h +41 -0
  36. data/ext/cvconvexitydefect.cpp +103 -0
  37. data/ext/cvconvexitydefect.h +42 -0
  38. data/ext/cverror.cpp +140 -0
  39. data/ext/cverror.h +79 -0
  40. data/ext/cvfont.cpp +173 -0
  41. data/ext/cvfont.h +56 -0
  42. data/ext/cvhaarclassifiercascade.cpp +159 -0
  43. data/ext/cvhaarclassifiercascade.h +41 -0
  44. data/ext/cvhistogram.cpp +200 -0
  45. data/ext/cvhistogram.h +51 -0
  46. data/ext/cvindex.cpp +73 -0
  47. data/ext/cvindex.h +40 -0
  48. data/ext/cvline.cpp +106 -0
  49. data/ext/cvline.h +52 -0
  50. data/ext/cvmat.cpp +4809 -0
  51. data/ext/cvmat.h +286 -0
  52. data/ext/cvmatnd.cpp +44 -0
  53. data/ext/cvmatnd.h +28 -0
  54. data/ext/cvmemstorage.cpp +64 -0
  55. data/ext/cvmemstorage.h +53 -0
  56. data/ext/cvmoments.cpp +204 -0
  57. data/ext/cvmoments.h +48 -0
  58. data/ext/cvpoint.cpp +229 -0
  59. data/ext/cvpoint.h +59 -0
  60. data/ext/cvpoint2d32f.cpp +213 -0
  61. data/ext/cvpoint2d32f.h +61 -0
  62. data/ext/cvpoint3d32f.cpp +245 -0
  63. data/ext/cvpoint3d32f.h +64 -0
  64. data/ext/cvrect.cpp +340 -0
  65. data/ext/cvrect.h +79 -0
  66. data/ext/cvscalar.cpp +227 -0
  67. data/ext/cvscalar.h +63 -0
  68. data/ext/cvseq.cpp +583 -0
  69. data/ext/cvseq.h +71 -0
  70. data/ext/cvset.cpp +63 -0
  71. data/ext/cvset.h +39 -0
  72. data/ext/cvsize.cpp +223 -0
  73. data/ext/cvsize.h +63 -0
  74. data/ext/cvsize2d32f.cpp +180 -0
  75. data/ext/cvsize2d32f.h +59 -0
  76. data/ext/cvslice.cpp +82 -0
  77. data/ext/cvslice.h +53 -0
  78. data/ext/cvsparsemat.cpp +44 -0
  79. data/ext/cvsparsemat.h +28 -0
  80. data/ext/cvtermcriteria.cpp +183 -0
  81. data/ext/cvtermcriteria.h +71 -0
  82. data/ext/cvtwopoints.cpp +98 -0
  83. data/ext/cvtwopoints.h +50 -0
  84. data/ext/cvvector.cpp +206 -0
  85. data/ext/cvvector.h +54 -0
  86. data/ext/cvvideowriter.cpp +116 -0
  87. data/ext/cvvideowriter.h +41 -0
  88. data/ext/extconf.rb +61 -0
  89. data/ext/gui.cpp +65 -0
  90. data/ext/gui.h +33 -0
  91. data/ext/iplconvkernel.cpp +177 -0
  92. data/ext/iplconvkernel.h +52 -0
  93. data/ext/iplimage.cpp +238 -0
  94. data/ext/iplimage.h +54 -0
  95. data/ext/mouseevent.cpp +184 -0
  96. data/ext/mouseevent.h +59 -0
  97. data/ext/opencv.cpp +481 -0
  98. data/ext/opencv.h +356 -0
  99. data/ext/point3dset.cpp +41 -0
  100. data/ext/point3dset.h +31 -0
  101. data/ext/pointset.cpp +238 -0
  102. data/ext/pointset.h +69 -0
  103. data/ext/trackbar.cpp +122 -0
  104. data/ext/trackbar.h +65 -0
  105. data/ext/window.cpp +368 -0
  106. data/ext/window.h +56 -0
  107. data/images/CvMat_sobel.png +0 -0
  108. data/images/CvMat_sub_rect.png +0 -0
  109. data/images/CvSeq_relationmap.png +0 -0
  110. data/images/face_detect_from_lena.jpg +0 -0
  111. data/lib/opencv.rb +3 -0
  112. data/lib/version.rb +3 -0
  113. data/setup/setup.cygwin.rb +120 -0
  114. data/setup/setup.mingw.rb +99 -0
  115. data/setup/setup.mswin32.rb +103 -0
  116. data/test/test_opencv.rb +4 -0
  117. metadata +191 -0
@@ -0,0 +1,59 @@
1
+ /************************************************************
2
+
3
+ mouseevent.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifdef HAVE_CALLBACK_H
11
+
12
+ #define __NAMESPACE_BEGIN_MOUSEEVENT namespace cMouseEvent{
13
+ #define __NAMESPACE_END_MOUSEEVENT }
14
+
15
+ #ifndef RUBY_OPENCV_GUI_MOUSEEVENT_H
16
+ #define RUBY_OPENCV_GUI_MOUSEEVENT_H
17
+
18
+ #include"opencv.h"
19
+
20
+ __NAMESPACE_BEGIN_OPENCV
21
+ __NAMESPACE_BEGIN_GUI
22
+ __NAMESPACE_BEGIN_MOUSEEVENT
23
+
24
+ typedef struct MouseEvent{
25
+ CvPoint point;
26
+ int event;
27
+ int flag;
28
+ }MouseEvent;
29
+
30
+ VALUE rb_class();
31
+
32
+ void define_ruby_class();
33
+
34
+ VALUE rb_allocate(VALUE klass);
35
+
36
+ VALUE rb_event(VALUE self);
37
+
38
+ VALUE rb_left_button_q(VALUE self);
39
+ VALUE rb_right_button_q(VALUE self);
40
+ VALUE rb_middle_button_q(VALUE self);
41
+ VALUE rb_ctrl_key_q(VALUE self);
42
+ VALUE rb_shift_key_q(VALUE self);
43
+ VALUE rb_alt_key_q(VALUE self);
44
+
45
+ VALUE new_object(int event, int x, int y, int flag);
46
+
47
+ inline MouseEvent *MOUSEEVENT(VALUE object){
48
+ MouseEvent *ptr;
49
+ Data_Get_Struct(object, MouseEvent, ptr);
50
+ return ptr;
51
+ }
52
+
53
+ __NAMESPACE_END_MOUSEEVENT
54
+ __NAMESPACE_END_GUI
55
+ __NAMESPACE_END_OPENCV
56
+
57
+ #endif // RUBY_OPENCV_GUI_MOUSEEVENT_H
58
+
59
+ #endif // HAVE_CALLBACK_H
@@ -0,0 +1,481 @@
1
+ /************************************************************
2
+
3
+ opencv.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2008 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ /*
11
+ * Document-module: OpenCV
12
+ *
13
+ * =What is OpenCV?
14
+ *
15
+ * OpenCV is "Open Source Computer Vision Library".
16
+ * OpenCV is developed by Intel and many opensource developers.
17
+ * This library include many useful function for computer vision, such as object-detection.
18
+ *
19
+ * OpenCV is developed at
20
+ * sourceforge.net[http://sourceforge.net/projects/opencvlibrary]
21
+ *
22
+ * =What is Ruby/OpenCV?
23
+ * Ruby/OpenCV is manual Wrapper of OpenCV (not use SWIG).
24
+ * This library seem to be *Ruby*.
25
+ * * object-oriented
26
+ * * support Garbage Collection by Ruby
27
+ * Ruby/OpenCV is developed
28
+ * http://rubyforge.org/projects/opencv (Official)
29
+ * and
30
+ * http://blueruby.mydns.jp/pages/opencv (Japanese)
31
+ *
32
+ * =How to install
33
+ *
34
+ * Show INSTALL
35
+ *
36
+ * =How to generate this documentation?
37
+ * This document created by rdoc.
38
+ * If you have Ruby 1.8 or later, you might use rdoc command.
39
+ * for example
40
+ * > cd opencv
41
+ * > rdoc
42
+ * and show "./doc/index.html"
43
+ */
44
+ #include "opencv.h"
45
+
46
+ __NAMESPACE_BEGIN_OPENCV
47
+
48
+
49
+ /*
50
+ * Hashtable for protect from GC
51
+ */
52
+ st_table *root_table = st_init_numtable();
53
+
54
+ /*
55
+ * Mark root object. (protect from GC)
56
+ */
57
+ void
58
+ mark_root_object(void *ptr)
59
+ {
60
+ VALUE value;
61
+ if(ptr && st_lookup(root_table, (st_data_t)ptr, (st_data_t*)&value)){
62
+ rb_gc_mark(value);
63
+ }
64
+ }
65
+
66
+ /*
67
+ * Look-up Root root object.
68
+ */
69
+ VALUE
70
+ lookup_root_object(void *ptr)
71
+ {
72
+ VALUE value = 0;
73
+ if(ptr)
74
+ st_lookup(root_table, (st_data_t)ptr, (st_data_t*)&value);
75
+ return value;
76
+ }
77
+
78
+ /*
79
+ * Resist root object.
80
+ */
81
+ void
82
+ resist_root_object(void *ptr, VALUE root)
83
+ {
84
+ st_insert(root_table, (st_data_t)ptr, (st_data_t)root);
85
+ }
86
+
87
+ /*
88
+ * Delete mark symbol from hashtable only, not free memory.
89
+ */
90
+ void
91
+ unresist_object(void *ptr)
92
+ {
93
+ st_delete(root_table, (st_data_t*)&ptr, 0);
94
+ }
95
+
96
+ /*
97
+ * Delete mark symbol from hash table, then free memory.
98
+ */
99
+ void
100
+ free_object(void *ptr)
101
+ {
102
+ if(ptr){
103
+ unresist_object(ptr);
104
+ cvFree(&ptr);
105
+ }
106
+ }
107
+
108
+ /*
109
+ * Release OpenCV specific structure(i.e CvMat, IplImage..) from memory and delete from hashtable.
110
+ */
111
+ void
112
+ release_object(void *ptr)
113
+ {
114
+ if(ptr){
115
+ unresist_object(ptr);
116
+ cvRelease(&ptr);
117
+ }
118
+ }
119
+
120
+ VALUE rb_module;
121
+ VALUE rb_opencv_constants;
122
+
123
+ VALUE
124
+ rb_module_opencv()
125
+ {
126
+ return rb_module;
127
+ }
128
+
129
+ /*
130
+ * convert OpenCV internal error to Ruby exception.
131
+ */
132
+ int
133
+ error_callback(int status,
134
+ const char *function_name,
135
+ const char *error_message,
136
+ const char *file_name,
137
+ int line,
138
+ void *user_data)
139
+ {
140
+ int error_code = (CvStatus)cvGetErrStatus();
141
+ if(error_code){
142
+ OPENCV_RSTERR(); // = CV_StsOk
143
+ rb_warn("OpenCV error code (%d) : %s (%d in %s)", error_code, function_name, line, file_name);
144
+ rb_raise(mCvError::by_code(error_code), "%s", error_message);
145
+ }
146
+ return 0;
147
+ }
148
+
149
+ void
150
+ define_ruby_module()
151
+ {
152
+ if(rb_module)
153
+ return;
154
+ rb_module = rb_define_module("OpenCV");
155
+
156
+ /* 0: 8bit unsigned */
157
+ rb_define_const(rb_module, "CV_8U", INT2FIX(CV_8U));
158
+ /* 1: 8bit signed */
159
+ rb_define_const(rb_module, "CV_8S", INT2FIX(CV_8S));
160
+ /* 2: 16bit unsigned */
161
+ rb_define_const(rb_module, "CV_16U", INT2FIX(CV_16U));
162
+ /* 3: 16bit signed */
163
+ rb_define_const(rb_module, "CV_16S", INT2FIX(CV_16S));
164
+ /* 4: 32bit signed */
165
+ rb_define_const(rb_module, "CV_32S", INT2FIX(CV_32S));
166
+ /* 5: 32bit floating-point */
167
+ rb_define_const(rb_module, "CV_32F", INT2FIX(CV_32F));
168
+ /* 6: 64bit floating-point */
169
+ rb_define_const(rb_module, "CV_64F", INT2FIX(CV_64F));
170
+
171
+
172
+ VALUE inversion_method = rb_hash_new();
173
+ /* {:lu, :svd, :svd_sym(:svd_symmetric)}: Inversion method */
174
+ rb_define_const(rb_module, "INVERSION_METHOD", inversion_method);
175
+ RESIST_CVMETHOD(inversion_method, "lu", CV_LU);
176
+ RESIST_CVMETHOD(inversion_method, "svd", CV_SVD);
177
+ RESIST_CVMETHOD(inversion_method, "svd_sym", CV_SVD_SYM);
178
+ RESIST_CVMETHOD(inversion_method, "svd_symmetric", CV_SVD_SYM);
179
+
180
+ VALUE dxt_flag = rb_hash_new();
181
+ /* {:forward, :inverse, :scale, :rows}: DFT and DCT flags */
182
+ rb_define_const(rb_module, "DXT_FLAG", dxt_flag);
183
+ RESIST_CVMETHOD(dxt_flag, "forward", CV_DXT_FORWARD);
184
+ RESIST_CVMETHOD(dxt_flag, "inverse", CV_DXT_INVERSE);
185
+ RESIST_CVMETHOD(dxt_flag, "scale", CV_DXT_SCALE);
186
+ RESIST_CVMETHOD(dxt_flag, "rows", CV_DXT_ROWS);
187
+
188
+ VALUE interpolation_method = rb_hash_new();
189
+ /* {:nn, :linear, :area, :cubic}: Interpolation method */
190
+ rb_define_const(rb_module, "INTERPOLATION_METHOD", interpolation_method);
191
+ RESIST_CVMETHOD(interpolation_method, "nn", CV_INTER_NN);
192
+ RESIST_CVMETHOD(interpolation_method, "linear", CV_INTER_LINEAR);
193
+ RESIST_CVMETHOD(interpolation_method, "area", CV_INTER_AREA);
194
+ RESIST_CVMETHOD(interpolation_method, "cubic", CV_INTER_CUBIC);
195
+
196
+ VALUE warp_flag = rb_hash_new();
197
+ /* {:fill_outliers, :inverse_map}: Warp affine optional flags */
198
+ rb_define_const(rb_module, "WARP_FLAG", warp_flag);
199
+ RESIST_CVMETHOD(warp_flag, "fill_outliers", CV_WARP_FILL_OUTLIERS);
200
+ RESIST_CVMETHOD(warp_flag, "inverse_map", CV_WARP_INVERSE_MAP);
201
+
202
+ VALUE depth = rb_hash_new();
203
+ /* {:cv8u, :cv8s, :cv16u, :cv16s, :cv32s, :cv32f, :cv64f}: Depth of each pixel. */
204
+ rb_define_const(rb_module, "DEPTH", depth);
205
+ RESIST_CVMETHOD(depth, "cv8u", CV_8U);
206
+ RESIST_CVMETHOD(depth, "cv8s", CV_8S);
207
+ RESIST_CVMETHOD(depth, "cv16u", CV_16U);
208
+ RESIST_CVMETHOD(depth, "cv16s", CV_16S);
209
+ RESIST_CVMETHOD(depth, "cv32s", CV_32S);
210
+ RESIST_CVMETHOD(depth, "cv32f", CV_32F);
211
+ RESIST_CVMETHOD(depth, "cv64f", CV_64F);
212
+
213
+ VALUE connectivity = rb_hash_new();
214
+ /* {:aa(:anti_alias)}: Determined by the closeness of pixel values */
215
+ rb_define_const(rb_module, "CONNECTIVITY", connectivity);
216
+ RESIST_CVMETHOD(depth, "aa", CV_AA);
217
+ RESIST_CVMETHOD(depth, "anti_alias", CV_AA);
218
+
219
+ VALUE retrieval_mode = rb_hash_new();
220
+ /* {:external, :list, :ccomp, :tree}: Retrieval mode */
221
+ rb_define_const(rb_module, "RETRIEVAL_MODE", retrieval_mode);
222
+ RESIST_CVMETHOD(retrieval_mode, "external", CV_RETR_EXTERNAL);
223
+ RESIST_CVMETHOD(retrieval_mode, "list", CV_RETR_LIST);
224
+ RESIST_CVMETHOD(retrieval_mode, "ccomp", CV_RETR_CCOMP);
225
+ RESIST_CVMETHOD(retrieval_mode, "tree", CV_RETR_TREE);
226
+
227
+ VALUE approx_chain_method = rb_hash_new();
228
+ /* {:code, :approx_none, :approx_simple, :apporx_tc89_11, :approx_tc89_kcos}: Approximation method */
229
+ rb_define_const(rb_module, "APPROX_CHAIN_METHOD", approx_chain_method);
230
+ RESIST_CVMETHOD(approx_chain_method, "code", CV_CHAIN_CODE);
231
+ RESIST_CVMETHOD(approx_chain_method, "approx_none", CV_CHAIN_APPROX_NONE);
232
+ RESIST_CVMETHOD(approx_chain_method, "approx_simple", CV_CHAIN_APPROX_SIMPLE);
233
+ RESIST_CVMETHOD(approx_chain_method, "approx_tc89_l1", CV_CHAIN_APPROX_TC89_L1);
234
+ RESIST_CVMETHOD(approx_chain_method, "approx_tc89_kcos", CV_CHAIN_APPROX_TC89_KCOS);
235
+
236
+ VALUE approx_poly_method = rb_hash_new();
237
+ /* {:dp}: Approximation method (polygon) */
238
+ rb_define_const(rb_module, "APPROX_POLY_METHOD", approx_poly_method);
239
+ RESIST_CVMETHOD(approx_poly_method, "dp", CV_POLY_APPROX_DP);
240
+
241
+ VALUE match_template_method = rb_hash_new();
242
+ /* {:sqdiff, :sqdiff_normed, :ccorr, :ccorr_normed, :ccoeff, :ccoeff_normed}: Match template method */
243
+ rb_define_const(rb_module, "MATCH_TEMPLATE_METHOD", match_template_method);
244
+ RESIST_CVMETHOD(match_template_method, "sqdiff", CV_TM_SQDIFF);
245
+ RESIST_CVMETHOD(match_template_method, "sqdiff_normed", CV_TM_SQDIFF_NORMED);
246
+ RESIST_CVMETHOD(match_template_method, "ccorr", CV_TM_CCORR);
247
+ RESIST_CVMETHOD(match_template_method, "ccorr_normed", CV_TM_CCORR_NORMED);
248
+ RESIST_CVMETHOD(match_template_method, "ccoeff", CV_TM_CCOEFF);
249
+ RESIST_CVMETHOD(match_template_method, "ccoeff_normed", CV_TM_CCOEFF_NORMED);
250
+
251
+ /* color convert methods */
252
+ rb_define_module_function(rb_module, "BGR2BGRA", RUBY_METHOD_FUNC(rb_BGR2BGRA), 1);
253
+ rb_define_module_function(rb_module, "RGB2RGBA", RUBY_METHOD_FUNC(rb_RGB2RGBA), 1);
254
+ rb_define_module_function(rb_module, "BGRA2BGR", RUBY_METHOD_FUNC(rb_BGRA2BGR), 1);
255
+ rb_define_module_function(rb_module, "RGBA2RGB", RUBY_METHOD_FUNC(rb_RGBA2RGB), 1);
256
+ rb_define_module_function(rb_module, "BGR2RGBA", RUBY_METHOD_FUNC(rb_BGR2RGBA), 1);
257
+ rb_define_module_function(rb_module, "RGB2BGRA", RUBY_METHOD_FUNC(rb_RGB2BGRA), 1);
258
+ rb_define_module_function(rb_module, "RGBA2BGR", RUBY_METHOD_FUNC(rb_RGBA2BGR), 1);
259
+ rb_define_module_function(rb_module, "BGRA2RGB", RUBY_METHOD_FUNC(rb_BGRA2RGB), 1);
260
+ rb_define_module_function(rb_module, "BGR2RGB", RUBY_METHOD_FUNC(rb_BGR2RGB), 1);
261
+ rb_define_module_function(rb_module, "RGB2BGR", RUBY_METHOD_FUNC(rb_RGB2BGR), 1);
262
+ rb_define_module_function(rb_module, "BGRA2RGBA", RUBY_METHOD_FUNC(rb_BGRA2RGBA), 1);
263
+ rb_define_module_function(rb_module, "RGBA2BGRA", RUBY_METHOD_FUNC(rb_RGBA2BGRA), 1);
264
+ rb_define_module_function(rb_module, "BGR2GRAY", RUBY_METHOD_FUNC(rb_BGR2GRAY), 1);
265
+ rb_define_module_function(rb_module, "RGB2GRAY", RUBY_METHOD_FUNC(rb_RGB2GRAY), 1);
266
+ rb_define_module_function(rb_module, "GRAY2BGR", RUBY_METHOD_FUNC(rb_GRAY2BGR), 1);
267
+ rb_define_module_function(rb_module, "GRAY2RGB", RUBY_METHOD_FUNC(rb_GRAY2RGB), 1);
268
+ rb_define_module_function(rb_module, "GRAY2BGRA", RUBY_METHOD_FUNC(rb_GRAY2BGRA), 1);
269
+ rb_define_module_function(rb_module, "GRAY2RGBA", RUBY_METHOD_FUNC(rb_GRAY2RGBA), 1);
270
+ rb_define_module_function(rb_module, "BGRA2GRAY", RUBY_METHOD_FUNC(rb_BGRA2GRAY), 1);
271
+ rb_define_module_function(rb_module, "RGBA2GRAY", RUBY_METHOD_FUNC(rb_RGBA2GRAY), 1);
272
+ rb_define_module_function(rb_module, "BGR2BGR565", RUBY_METHOD_FUNC(rb_BGR2BGR565), 1);
273
+ rb_define_module_function(rb_module, "RGB2BGR565", RUBY_METHOD_FUNC(rb_RGB2BGR565), 1);
274
+ rb_define_module_function(rb_module, "BGR5652BGR", RUBY_METHOD_FUNC(rb_BGR5652BGR), 1);
275
+ rb_define_module_function(rb_module, "BGR5652RGB", RUBY_METHOD_FUNC(rb_BGR5652RGB), 1);
276
+ rb_define_module_function(rb_module, "BGRA2BGR565", RUBY_METHOD_FUNC(rb_BGRA2BGR565), 1);
277
+ rb_define_module_function(rb_module, "RGBA2BGR565", RUBY_METHOD_FUNC(rb_RGBA2BGR565), 1);
278
+ rb_define_module_function(rb_module, "BGR5652BGRA", RUBY_METHOD_FUNC(rb_BGR5652BGRA), 1);
279
+ rb_define_module_function(rb_module, "BGR5652RGBA", RUBY_METHOD_FUNC(rb_BGR5652RGBA), 1);
280
+ rb_define_module_function(rb_module, "GRAY2BGR565", RUBY_METHOD_FUNC(rb_GRAY2BGR565), 1);
281
+ rb_define_module_function(rb_module, "BGR5652GRAY", RUBY_METHOD_FUNC(rb_BGR5652GRAY), 1);
282
+ rb_define_module_function(rb_module, "BGR2BGR555", RUBY_METHOD_FUNC(rb_BGR2BGR555), 1);
283
+ rb_define_module_function(rb_module, "RGB2BGR555", RUBY_METHOD_FUNC(rb_RGB2BGR555), 1);
284
+ rb_define_module_function(rb_module, "BGR5552BGR", RUBY_METHOD_FUNC(rb_BGR5552BGR), 1);
285
+ rb_define_module_function(rb_module, "BGR5552RGB", RUBY_METHOD_FUNC(rb_BGR5552RGB), 1);
286
+ rb_define_module_function(rb_module, "BGRA2BGR555", RUBY_METHOD_FUNC(rb_BGRA2BGR555), 1);
287
+ rb_define_module_function(rb_module, "RGBA2BGR555", RUBY_METHOD_FUNC(rb_RGBA2BGR555), 1);
288
+ rb_define_module_function(rb_module, "BGR5552BGRA", RUBY_METHOD_FUNC(rb_BGR5552BGRA), 1);
289
+ rb_define_module_function(rb_module, "BGR5552RGBA", RUBY_METHOD_FUNC(rb_BGR5552RGBA), 1);
290
+ rb_define_module_function(rb_module, "GRAY2BGR555", RUBY_METHOD_FUNC(rb_GRAY2BGR555), 1);
291
+ rb_define_module_function(rb_module, "BGR5552GRAY", RUBY_METHOD_FUNC(rb_BGR5552GRAY), 1);
292
+ rb_define_module_function(rb_module, "BGR2XYZ", RUBY_METHOD_FUNC(rb_BGR2XYZ), 1);
293
+ rb_define_module_function(rb_module, "RGB2XYZ", RUBY_METHOD_FUNC(rb_RGB2XYZ), 1);
294
+ rb_define_module_function(rb_module, "XYZ2BGR", RUBY_METHOD_FUNC(rb_XYZ2BGR), 1);
295
+ rb_define_module_function(rb_module, "XYZ2RGB", RUBY_METHOD_FUNC(rb_XYZ2RGB), 1);
296
+ rb_define_module_function(rb_module, "BGR2YCrCb", RUBY_METHOD_FUNC(rb_BGR2YCrCb), 1);
297
+ rb_define_module_function(rb_module, "RGB2YCrCb", RUBY_METHOD_FUNC(rb_RGB2YCrCb), 1);
298
+ rb_define_module_function(rb_module, "YCrCb2BGR", RUBY_METHOD_FUNC(rb_YCrCb2BGR), 1);
299
+ rb_define_module_function(rb_module, "YCrCb2RGB", RUBY_METHOD_FUNC(rb_YCrCb2RGB), 1);
300
+ rb_define_module_function(rb_module, "BGR2HSV", RUBY_METHOD_FUNC(rb_BGR2HSV), 1);
301
+ rb_define_module_function(rb_module, "RGB2HSV", RUBY_METHOD_FUNC(rb_RGB2HSV), 1);
302
+ rb_define_module_function(rb_module, "BGR2Lab", RUBY_METHOD_FUNC(rb_BGR2Lab), 1);
303
+ rb_define_module_function(rb_module, "RGB2Lab", RUBY_METHOD_FUNC(rb_RGB2Lab), 1);
304
+ rb_define_module_function(rb_module, "BayerBG2BGR", RUBY_METHOD_FUNC(rb_BayerBG2BGR), 1);
305
+ rb_define_module_function(rb_module, "BayerGB2BGR", RUBY_METHOD_FUNC(rb_BayerGB2BGR), 1);
306
+ rb_define_module_function(rb_module, "BayerRG2BGR", RUBY_METHOD_FUNC(rb_BayerRG2BGR), 1);
307
+ rb_define_module_function(rb_module, "BayerGR2BGR", RUBY_METHOD_FUNC(rb_BayerGR2BGR), 1);
308
+ rb_define_module_function(rb_module, "BayerBG2RGB", RUBY_METHOD_FUNC(rb_BayerBG2RGB), 1);
309
+ rb_define_module_function(rb_module, "BayerGB2RGB", RUBY_METHOD_FUNC(rb_BayerGB2RGB), 1);
310
+ rb_define_module_function(rb_module, "BayerRG2RGB", RUBY_METHOD_FUNC(rb_BayerRG2RGB), 1);
311
+ rb_define_module_function(rb_module, "BayerGR2RGB", RUBY_METHOD_FUNC(rb_BayerGR2RGB), 1);
312
+ rb_define_module_function(rb_module, "BGR2Luv", RUBY_METHOD_FUNC(rb_BGR2Luv), 1);
313
+ rb_define_module_function(rb_module, "RGB2Luv", RUBY_METHOD_FUNC(rb_RGB2Luv), 1);
314
+ rb_define_module_function(rb_module, "BGR2HLS", RUBY_METHOD_FUNC(rb_BGR2HLS), 1);
315
+ rb_define_module_function(rb_module, "RGB2HLS", RUBY_METHOD_FUNC(rb_RGB2HLS), 1);
316
+ rb_define_module_function(rb_module, "HSV2BGR", RUBY_METHOD_FUNC(rb_HSV2BGR), 1);
317
+ rb_define_module_function(rb_module, "HSV2RGB", RUBY_METHOD_FUNC(rb_HSV2RGB), 1);
318
+ rb_define_module_function(rb_module, "Lab2BGR", RUBY_METHOD_FUNC(rb_Lab2BGR), 1);
319
+ rb_define_module_function(rb_module, "Lab2RGB", RUBY_METHOD_FUNC(rb_Lab2RGB), 1);
320
+ rb_define_module_function(rb_module, "Luv2BGR", RUBY_METHOD_FUNC(rb_Luv2BGR), 1);
321
+ rb_define_module_function(rb_module, "Luv2RGB", RUBY_METHOD_FUNC(rb_Luv2RGB), 1);
322
+ rb_define_module_function(rb_module, "HLS2BGR", RUBY_METHOD_FUNC(rb_HLS2BGR), 1);
323
+ rb_define_module_function(rb_module, "HLS2RGB", RUBY_METHOD_FUNC(rb_HLS2RGB), 1);
324
+ }
325
+
326
+ #define CREATE_CVTCOLOR_FUNC(rb_func_name, c_const_name, src_cn, dest_cn) \
327
+ VALUE rb_func_name(VALUE klass, VALUE image) \
328
+ { \
329
+ VALUE dest; \
330
+ if (!rb_obj_is_kind_of(image, cCvMat::rb_class())) \
331
+ rb_raise(rb_eTypeError, "argument 1 should be %s.", rb_class2name(cCvMat::rb_class())); \
332
+ int type = cvGetElemType(CVARR(image)); \
333
+ if (CV_MAT_CN(type) != src_cn) \
334
+ rb_raise(rb_eTypeError, "argument 1 should be %d-channel.", src_cn); \
335
+ dest = cIplImage::new_object(cvGetSize(CVARR(image)), CV_MAKETYPE(CV_MAT_DEPTH(type), dest_cn)); \
336
+ cvCvtColor(CVARR(image), CVARR(dest), c_const_name); \
337
+ return dest; \
338
+ }
339
+
340
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGRA, CV_BGR2BGRA, 3, 4);
341
+ CREATE_CVTCOLOR_FUNC(rb_RGB2RGBA, CV_RGB2RGBA, 3, 4);
342
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR, CV_BGRA2BGR, 4, 3);
343
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2RGB, CV_RGBA2RGB, 4, 3);
344
+ CREATE_CVTCOLOR_FUNC(rb_BGR2RGBA, CV_BGR2RGBA, 3, 4);
345
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGRA, CV_RGB2BGRA, 3, 4);
346
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR, CV_RGBA2BGR, 4, 3);
347
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2RGB, CV_BGRA2RGB, 4, 3);
348
+ CREATE_CVTCOLOR_FUNC(rb_BGR2RGB, CV_BGR2RGB, 3, 3);
349
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR, CV_RGB2BGR, 3, 3);
350
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2RGBA, CV_BGRA2RGBA, 4, 4);
351
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGRA, CV_RGBA2BGRA, 4, 4);
352
+ CREATE_CVTCOLOR_FUNC(rb_BGR2GRAY, CV_BGR2GRAY, 3, 1);
353
+ CREATE_CVTCOLOR_FUNC(rb_RGB2GRAY, CV_RGB2GRAY, 3, 1);
354
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR, CV_GRAY2BGR, 1, 3);
355
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2RGB, CV_GRAY2RGB, 1, 3);
356
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGRA, CV_GRAY2BGRA, 1, 4);
357
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2RGBA, CV_GRAY2RGBA, 1, 4);
358
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2GRAY, CV_BGRA2GRAY, 4, 1);
359
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2GRAY, CV_RGBA2GRAY, 4, 1);
360
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGR565, CV_BGR2BGR565, 3, 3);
361
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR565, CV_RGB2BGR565, 3, 3);
362
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652BGR, CV_BGR5652BGR, 3, 3);
363
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652RGB, CV_BGR5652RGB, 3, 3);
364
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR565, CV_BGRA2BGR565, 4, 3);
365
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR565, CV_RGBA2BGR565, 4, 3);
366
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652BGRA, CV_BGR5652BGRA, 3, 4);
367
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652RGBA, CV_BGR5652RGBA, 3, 4);
368
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR565, CV_GRAY2BGR565, 1, 3);
369
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652GRAY, CV_BGR5652GRAY, 3, 1);
370
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGR555, CV_BGR2BGR555, 3, 3);
371
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR555, CV_RGB2BGR555, 3, 3);
372
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552BGR, CV_BGR5552BGR, 3, 3);
373
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552RGB, CV_BGR5552RGB, 3, 3);
374
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR555, CV_BGRA2BGR555, 4, 3);
375
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR555, CV_RGBA2BGR555, 4, 3);
376
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552BGRA, CV_BGR5552BGRA, 3, 4);
377
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552RGBA, CV_BGR5552RGBA, 3, 4);
378
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR555, CV_GRAY2BGR555, 1, 3);
379
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552GRAY, CV_BGR5552GRAY, 3, 1);
380
+ CREATE_CVTCOLOR_FUNC(rb_BGR2XYZ, CV_BGR2XYZ, 3, 3);
381
+ CREATE_CVTCOLOR_FUNC(rb_RGB2XYZ, CV_RGB2XYZ, 3, 3);
382
+ CREATE_CVTCOLOR_FUNC(rb_XYZ2BGR, CV_XYZ2BGR, 3, 3);
383
+ CREATE_CVTCOLOR_FUNC(rb_XYZ2RGB, CV_XYZ2RGB, 3, 3);
384
+ CREATE_CVTCOLOR_FUNC(rb_BGR2YCrCb, CV_BGR2YCrCb, 3, 3);
385
+ CREATE_CVTCOLOR_FUNC(rb_RGB2YCrCb, CV_RGB2YCrCb, 3, 3);
386
+ CREATE_CVTCOLOR_FUNC(rb_YCrCb2BGR, CV_YCrCb2BGR, 3, 3);
387
+ CREATE_CVTCOLOR_FUNC(rb_YCrCb2RGB, CV_YCrCb2RGB, 0, 3);
388
+ CREATE_CVTCOLOR_FUNC(rb_BGR2HSV, CV_BGR2HSV, 3, 3);
389
+ CREATE_CVTCOLOR_FUNC(rb_RGB2HSV, CV_RGB2HSV, 3, 3);
390
+ CREATE_CVTCOLOR_FUNC(rb_BGR2Lab, CV_BGR2Lab, 3, 3);
391
+ CREATE_CVTCOLOR_FUNC(rb_RGB2Lab, CV_RGB2Lab, 3, 3);
392
+ CREATE_CVTCOLOR_FUNC(rb_BayerBG2BGR, CV_BayerBG2BGR, 3, 3);
393
+ CREATE_CVTCOLOR_FUNC(rb_BayerGB2BGR, CV_BayerGB2BGR, 3, 3);
394
+ CREATE_CVTCOLOR_FUNC(rb_BayerRG2BGR, CV_BayerRG2BGR, 3, 3);
395
+ CREATE_CVTCOLOR_FUNC(rb_BayerGR2BGR, CV_BayerGR2BGR, 3, 3);
396
+ CREATE_CVTCOLOR_FUNC(rb_BayerBG2RGB, CV_BayerBG2RGB, 3, 3);
397
+ CREATE_CVTCOLOR_FUNC(rb_BayerGB2RGB, CV_BayerGB2RGB, 3, 3);
398
+ CREATE_CVTCOLOR_FUNC(rb_BayerRG2RGB, CV_BayerRG2RGB, 3, 3);
399
+ CREATE_CVTCOLOR_FUNC(rb_BayerGR2RGB, CV_BayerGR2RGB, 3, 3);
400
+ CREATE_CVTCOLOR_FUNC(rb_BGR2Luv, CV_BGR2Luv, 3, 3);
401
+ CREATE_CVTCOLOR_FUNC(rb_RGB2Luv, CV_RGB2Luv, 3, 3);
402
+ CREATE_CVTCOLOR_FUNC(rb_BGR2HLS, CV_BGR2HLS, 3, 3);
403
+ CREATE_CVTCOLOR_FUNC(rb_RGB2HLS, CV_RGB2HLS, 3, 3);
404
+ CREATE_CVTCOLOR_FUNC(rb_HSV2BGR, CV_HSV2BGR, 3, 3);
405
+ CREATE_CVTCOLOR_FUNC(rb_HSV2RGB, CV_HSV2RGB, 3, 3);
406
+ CREATE_CVTCOLOR_FUNC(rb_Lab2BGR, CV_Lab2BGR, 3, 3);
407
+ CREATE_CVTCOLOR_FUNC(rb_Lab2RGB, CV_Lab2RGB, 3, 3);
408
+ CREATE_CVTCOLOR_FUNC(rb_Luv2BGR, CV_Luv2BGR, 3, 3);
409
+ CREATE_CVTCOLOR_FUNC(rb_Luv2RGB, CV_Luv2RGB, 3, 3);
410
+ CREATE_CVTCOLOR_FUNC(rb_HLS2BGR, CV_HLS2BGR, 3, 3);
411
+ CREATE_CVTCOLOR_FUNC(rb_HLS2RGB, CV_HLS2RGB, 3, 3);
412
+
413
+ __NAMESPACE_END_OPENCV
414
+
415
+ extern "C"{
416
+ void
417
+ Init_opencv()
418
+ {
419
+ cvRedirectError((CvErrorCallback)mOpenCV::error_callback);
420
+
421
+ mOpenCV::define_ruby_module();
422
+
423
+ mOpenCV::mCvError::define_ruby_module();
424
+ mOpenCV::cCvPoint::define_ruby_class();
425
+ mOpenCV::cCvPoint2D32f::define_ruby_class();
426
+ mOpenCV::cCvPoint3D32f::define_ruby_class();
427
+ mOpenCV::cCvSize::define_ruby_class();
428
+ mOpenCV::cCvSize2D32f::define_ruby_class();
429
+ mOpenCV::cCvRect::define_ruby_class();
430
+ mOpenCV::cCvScalar::define_ruby_class();
431
+ mOpenCV::cCvSlice::define_ruby_class();
432
+ mOpenCV::cCvTermCriteria::define_ruby_class();
433
+ mOpenCV::cCvBox2D::define_ruby_class();
434
+ mOpenCV::cCvFont::define_ruby_class();
435
+ mOpenCV::cIplConvKernel::define_ruby_class();
436
+ mOpenCV::cCvMoments::define_ruby_class();
437
+ mOpenCV::cCvConvexityDefect::define_ruby_class();
438
+
439
+ mOpenCV::cCvMemStorage::define_ruby_class();
440
+
441
+ mOpenCV::cCvSeq::define_ruby_class();
442
+ mOpenCV::mCurve::define_ruby_module();
443
+ mOpenCV::mPointSet::define_ruby_module();
444
+ mOpenCV::mPoint3DSet::define_ruby_module();
445
+ mOpenCV::cCvSet::define_ruby_class();
446
+ mOpenCV::cCvChain::define_ruby_class();
447
+ mOpenCV::cCvChainCode::define_ruby_class();
448
+ mOpenCV::cCvContour::define_ruby_class();
449
+ mOpenCV::cCvContourTree::define_ruby_class();
450
+
451
+ mOpenCV::cCvMat::define_ruby_class();
452
+ mOpenCV::cIplImage::define_ruby_class();
453
+ mOpenCV::cCvMatND::define_ruby_class();
454
+ mOpenCV::cCvSparseMat::define_ruby_class();
455
+ mOpenCV::cCvHistogram::define_ruby_class();
456
+ mOpenCV::cCvCapture::define_ruby_class();
457
+
458
+ mOpenCV::cCvIndex::define_ruby_class();
459
+ mOpenCV::cCvLine::define_ruby_class();
460
+ mOpenCV::cCvTwoPoints::define_ruby_class();
461
+ mOpenCV::cCvCircle32f::define_ruby_class();
462
+
463
+ mOpenCV::cCvConDensation::define_ruby_class();
464
+
465
+ mOpenCV::cCvConnectedComp::define_ruby_class();
466
+ mOpenCV::cCvAvgComp::define_ruby_class();
467
+ mOpenCV::cCvHaarClassifierCascade::define_ruby_class();
468
+ #ifdef HAVE_CALLBACK_H
469
+ mOpenCV::mGUI::define_ruby_module();
470
+ mOpenCV::mGUI::cWindow::define_ruby_class();
471
+ mOpenCV::mGUI::cTrackbar::define_ruby_class();
472
+ mOpenCV::mGUI::cMouseEvent::define_ruby_class();
473
+ #endif
474
+
475
+ #ifdef HAVE_ML_H
476
+ /* feature support.
477
+ mOpenCV::mMachineLearning::define_ruby_module();
478
+ */
479
+ #endif
480
+ }
481
+ }