opencv 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/License.txt +30 -0
- data/Manifest.txt +115 -0
- data/README.txt +47 -0
- data/Rakefile +34 -0
- data/examples/convexhull.rb +41 -0
- data/examples/face_detect.rb +25 -0
- data/examples/houghcircle.rb +23 -0
- data/examples/inpaint.png +0 -0
- data/examples/inpaint.rb +43 -0
- data/examples/paint.rb +72 -0
- data/examples/snake.rb +43 -0
- data/examples/stuff.jpg +0 -0
- data/ext/curve.cpp +103 -0
- data/ext/curve.h +34 -0
- data/ext/cvavgcomp.cpp +67 -0
- data/ext/cvavgcomp.h +39 -0
- data/ext/cvbox2d.cpp +114 -0
- data/ext/cvbox2d.h +53 -0
- data/ext/cvcapture.cpp +276 -0
- data/ext/cvcapture.h +54 -0
- data/ext/cvchain.cpp +184 -0
- data/ext/cvchain.h +43 -0
- data/ext/cvchaincode.cpp +49 -0
- data/ext/cvchaincode.h +43 -0
- data/ext/cvcircle32f.cpp +90 -0
- data/ext/cvcircle32f.h +53 -0
- data/ext/cvcondensation.cpp +230 -0
- data/ext/cvcondensation.h +49 -0
- data/ext/cvconnectedcomp.cpp +115 -0
- data/ext/cvconnectedcomp.h +46 -0
- data/ext/cvcontour.cpp +219 -0
- data/ext/cvcontour.h +47 -0
- data/ext/cvcontourtree.cpp +86 -0
- data/ext/cvcontourtree.h +41 -0
- data/ext/cvconvexitydefect.cpp +103 -0
- data/ext/cvconvexitydefect.h +42 -0
- data/ext/cverror.cpp +140 -0
- data/ext/cverror.h +79 -0
- data/ext/cvfont.cpp +173 -0
- data/ext/cvfont.h +56 -0
- data/ext/cvhaarclassifiercascade.cpp +159 -0
- data/ext/cvhaarclassifiercascade.h +41 -0
- data/ext/cvhistogram.cpp +200 -0
- data/ext/cvhistogram.h +51 -0
- data/ext/cvindex.cpp +73 -0
- data/ext/cvindex.h +40 -0
- data/ext/cvline.cpp +106 -0
- data/ext/cvline.h +52 -0
- data/ext/cvmat.cpp +4809 -0
- data/ext/cvmat.h +286 -0
- data/ext/cvmatnd.cpp +44 -0
- data/ext/cvmatnd.h +28 -0
- data/ext/cvmemstorage.cpp +64 -0
- data/ext/cvmemstorage.h +53 -0
- data/ext/cvmoments.cpp +204 -0
- data/ext/cvmoments.h +48 -0
- data/ext/cvpoint.cpp +229 -0
- data/ext/cvpoint.h +59 -0
- data/ext/cvpoint2d32f.cpp +213 -0
- data/ext/cvpoint2d32f.h +61 -0
- data/ext/cvpoint3d32f.cpp +245 -0
- data/ext/cvpoint3d32f.h +64 -0
- data/ext/cvrect.cpp +340 -0
- data/ext/cvrect.h +79 -0
- data/ext/cvscalar.cpp +227 -0
- data/ext/cvscalar.h +63 -0
- data/ext/cvseq.cpp +583 -0
- data/ext/cvseq.h +71 -0
- data/ext/cvset.cpp +63 -0
- data/ext/cvset.h +39 -0
- data/ext/cvsize.cpp +223 -0
- data/ext/cvsize.h +63 -0
- data/ext/cvsize2d32f.cpp +180 -0
- data/ext/cvsize2d32f.h +59 -0
- data/ext/cvslice.cpp +82 -0
- data/ext/cvslice.h +53 -0
- data/ext/cvsparsemat.cpp +44 -0
- data/ext/cvsparsemat.h +28 -0
- data/ext/cvtermcriteria.cpp +183 -0
- data/ext/cvtermcriteria.h +71 -0
- data/ext/cvtwopoints.cpp +98 -0
- data/ext/cvtwopoints.h +50 -0
- data/ext/cvvector.cpp +206 -0
- data/ext/cvvector.h +54 -0
- data/ext/cvvideowriter.cpp +116 -0
- data/ext/cvvideowriter.h +41 -0
- data/ext/extconf.rb +61 -0
- data/ext/gui.cpp +65 -0
- data/ext/gui.h +33 -0
- data/ext/iplconvkernel.cpp +177 -0
- data/ext/iplconvkernel.h +52 -0
- data/ext/iplimage.cpp +238 -0
- data/ext/iplimage.h +54 -0
- data/ext/mouseevent.cpp +184 -0
- data/ext/mouseevent.h +59 -0
- data/ext/opencv.cpp +481 -0
- data/ext/opencv.h +356 -0
- data/ext/point3dset.cpp +41 -0
- data/ext/point3dset.h +31 -0
- data/ext/pointset.cpp +238 -0
- data/ext/pointset.h +69 -0
- data/ext/trackbar.cpp +122 -0
- data/ext/trackbar.h +65 -0
- data/ext/window.cpp +368 -0
- data/ext/window.h +56 -0
- data/images/CvMat_sobel.png +0 -0
- data/images/CvMat_sub_rect.png +0 -0
- data/images/CvSeq_relationmap.png +0 -0
- data/images/face_detect_from_lena.jpg +0 -0
- data/lib/opencv.rb +3 -0
- data/lib/version.rb +3 -0
- data/setup/setup.cygwin.rb +120 -0
- data/setup/setup.mingw.rb +99 -0
- data/setup/setup.mswin32.rb +103 -0
- data/test/test_opencv.rb +4 -0
- metadata +191 -0
data/ext/mouseevent.h
ADDED
@@ -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
|
data/ext/opencv.cpp
ADDED
@@ -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
|
+
}
|