opencv 0.0.6

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 (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
+ }