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,75 @@
1
+ /************************************************************
2
+
3
+ iplimage.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_IPLIMAGE_H
11
+ #define RUBY_OPENCV_IPLIMAGE_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_IPLIMAGE namespace cIplImage {
16
+ #define __NAMESPACE_END_IPLIMAGE }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_IPLIMAGE
20
+
21
+ VALUE rb_class();
22
+
23
+ void init_ruby_class();
24
+
25
+ VALUE rb_allocate(VALUE klass);
26
+ VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
27
+
28
+ VALUE rb_load_image(int argc, VALUE *argv, VALUE self);
29
+ VALUE rb_decode_image(int argc, VALUE *argv, VALUE self);
30
+
31
+ VALUE rb_color_model(VALUE self);
32
+
33
+ VALUE rb_get_roi(VALUE self);
34
+ VALUE rb_set_roi(VALUE self, VALUE roi);
35
+ VALUE rb_reset_roi(VALUE self);
36
+
37
+ VALUE rb_get_coi(VALUE self);
38
+ VALUE rb_set_coi(VALUE self, VALUE coi);
39
+ VALUE rb_reset_coi(VALUE self);
40
+
41
+ VALUE rb_pyr_segmentation(VALUE self, VALUE level, VALUE threshold1, VALUE threshold2);
42
+
43
+ VALUE rb_get_mat(VALUE self);
44
+
45
+ VALUE rb_smoothness(int argc, VALUE *argv, VALUE self);
46
+ typedef enum { SMOOTH = 1, BLANK = 2, MESSY = 3 } Smoothness;
47
+ Smoothness compute_smoothness(const IplImage *pFourierImage, const double lowFreqRatio, const double blankDensity, const double messyDensity, const double highFreqRatio, double &outLowDensity, double &outHighDensity);
48
+ void cvShiftDFT(CvArr *src_arr, CvArr *dst_arr );
49
+ IplImage* create_fourier_image(const IplImage *im);
50
+ IplImage* create_frequency_filtered_image(const IplImage *pImage, int low, int high);
51
+ void high_pass_range(const IplImage *pImage, float lostPercentage, int &outLow, int &outHigh);
52
+
53
+ VALUE new_object(int width, int height, int type);
54
+ VALUE new_object(CvSize size, int type);
55
+ __NAMESPACE_END_IPLIMAGE
56
+
57
+ inline IplImage*
58
+ IPLIMAGE(VALUE object)
59
+ {
60
+ IplImage *ptr, stub;
61
+ Data_Get_Struct(object, IplImage, ptr);
62
+ return cvGetImage(ptr, &stub);
63
+ }
64
+
65
+ inline IplImage*
66
+ IPLIMAGE_WITH_CHECK(VALUE object)
67
+ {
68
+ if (!rb_obj_is_kind_of(object, cIplImage::rb_class()))
69
+ raise_typeerror(object, cIplImage::rb_class());
70
+ return IPLIMAGE(object);
71
+ }
72
+
73
+ __NAMESPACE_END_OPENCV
74
+
75
+ #endif // RUBY_OPENCV_IPLIMAGE_H
@@ -0,0 +1,78 @@
1
+ /************************************************************
2
+
3
+ lbph.cpp -
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2013 ser1zw
8
+
9
+ ************************************************************/
10
+ #include <stdio.h>
11
+ #include "lbph.h"
12
+ /*
13
+ * Document-class: OpenCV::LBPH
14
+ *
15
+ */
16
+ __NAMESPACE_BEGIN_OPENCV
17
+ __NAMESPACE_BEGIN_LBPH
18
+
19
+ VALUE rb_klass;
20
+
21
+ VALUE
22
+ rb_class()
23
+ {
24
+ return rb_klass;
25
+ }
26
+
27
+ /*
28
+ * call-seq:
29
+ * LBPH.new(radius=1, neighbors=8, grid_x=8, grid_y=8, threshold=DBL_MAX) -> cvmat
30
+ */
31
+ VALUE
32
+ rb_initialize(int argc, VALUE argv[], VALUE self)
33
+ {
34
+ VALUE radius_val, neighbors_val, grid_x_val, grid_y_val, threshold_val;
35
+ rb_scan_args(argc, argv, "05", &radius_val, &neighbors_val, &grid_x_val, &grid_y_val, &threshold_val);
36
+
37
+ int radius = NIL_P(radius_val) ? 1 : NUM2INT(radius_val);
38
+ int neighbors = NIL_P(neighbors_val) ? 8 : NUM2INT(neighbors_val);
39
+ int grid_x = NIL_P(grid_x_val) ? 8 : NUM2INT(grid_x_val);
40
+ int grid_y = NIL_P(grid_y_val) ? 8 : NUM2INT(grid_y_val);
41
+ double threshold = NIL_P(threshold_val) ? DBL_MAX : NUM2INT(threshold_val);
42
+
43
+ free(DATA_PTR(self));
44
+ cv::Ptr<cv::FaceRecognizer> ptr = cv::createLBPHFaceRecognizer(radius, neighbors, grid_x, grid_y, threshold);
45
+ DATA_PTR(self) = ptr;
46
+
47
+ cFaceRecognizer::guard_facerecognizer(DATA_PTR(self), ptr);
48
+
49
+ return self;
50
+ }
51
+
52
+ void
53
+ init_ruby_class()
54
+ {
55
+ #if 0
56
+ // For documentation using YARD
57
+ VALUE opencv = rb_define_module("OpenCV");
58
+ VALUE alghorithm = rb_define_class_under(opencv, "Algorithm", rb_cObject);
59
+ VALUE face_recognizer = rb_define_class_under(opencv, "FaceRecognizer", alghorithm);
60
+ #endif
61
+
62
+ if (rb_klass)
63
+ return;
64
+ /*
65
+ * opencv = rb_define_module("OpenCV");
66
+ *
67
+ * note: this comment is used by rdoc.
68
+ */
69
+ VALUE opencv = rb_module_opencv();
70
+ VALUE face_recognizer = cFaceRecognizer::rb_class();
71
+ rb_klass = rb_define_class_under(opencv, "LBPH", face_recognizer);
72
+ rb_define_alloc_func(rb_klass, cFaceRecognizer::allocate_facerecognizer);
73
+ rb_define_private_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
74
+ }
75
+
76
+ __NAMESPACE_END_LBPH
77
+ __NAMESPACE_END_OPENCV
78
+
@@ -0,0 +1,30 @@
1
+ /************************************************************
2
+
3
+ lbph.h
4
+
5
+ $Author: ser1zw $
6
+
7
+ Copyright (C) 2013 ser1zw
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_LBPH_H
11
+ #define RUBY_OPENCV_LBPH_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_LBPH namespace cLBPH {
16
+ #define __NAMESPACE_END_LBPH }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_LBPH
20
+
21
+ VALUE rb_class();
22
+
23
+ void init_ruby_class();
24
+ VALUE rb_initialize(int argc, VALUE argv[], VALUE self);
25
+
26
+ __NAMESPACE_END_LBPH
27
+ __NAMESPACE_END_OPENCV
28
+
29
+ #endif // RUBY_OPENCV_LBPH_H
30
+
@@ -0,0 +1,186 @@
1
+ /************************************************************
2
+
3
+ mouseevent.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2007 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "mouseevent.h"
11
+ /*
12
+ * Document-module: OpenCV::GUI::MouseEvent
13
+ *
14
+ * MouseEvent object.
15
+ */
16
+ __NAMESPACE_BEGIN_OPENCV
17
+ __NAMESPACE_BEGIN_GUI
18
+ __NAMESPACE_BEGIN_MOUSEEVENT
19
+
20
+ VALUE rb_klass;
21
+
22
+ VALUE
23
+ rb_class()
24
+ {
25
+ return rb_klass;
26
+ }
27
+
28
+ VALUE
29
+ rb_allocate(VALUE klass)
30
+ {
31
+ MouseEvent *ptr;
32
+ return Data_Make_Struct(klass, MouseEvent, 0, 0, ptr);
33
+ }
34
+
35
+ /*
36
+ * call-seq:
37
+ * event -> symbol
38
+ *
39
+ * Return Symbol about mouse event.
40
+ *
41
+ * Currently, return these symbol:
42
+ * :move
43
+ * When mouse move.
44
+ * :right_button_down
45
+ * When mouse right button down.
46
+ * :left_button_down
47
+ * When mosue left button down.
48
+ * :middle_button_down
49
+ * When mosue middle button down.
50
+ * :left_button_up
51
+ * When mouse left button down.
52
+ * :right_button_up
53
+ * When mouse right button down.
54
+ * :middle_button_up
55
+ * When mouse middle button down.
56
+ *
57
+ * note: original OpenCV define "double-click" event(e.g. CV_EVENT_LBUTTONDBLCLK).
58
+ * But never call these event. Is it bug?
59
+ */
60
+ VALUE rb_event(VALUE self)
61
+ {
62
+ switch(MOUSEEVENT(self)->event) {
63
+ case CV_EVENT_MOUSEMOVE:
64
+ return ID2SYM(rb_intern("move"));
65
+ case CV_EVENT_LBUTTONDOWN:
66
+ return ID2SYM(rb_intern("left_button_down"));
67
+ case CV_EVENT_RBUTTONDOWN:
68
+ return ID2SYM(rb_intern("right_button_down"));
69
+ case CV_EVENT_MBUTTONDOWN:
70
+ return ID2SYM(rb_intern("middle_button_down"));
71
+ case CV_EVENT_LBUTTONUP:
72
+ return ID2SYM(rb_intern("left_button_up"));
73
+ case CV_EVENT_RBUTTONUP:
74
+ return ID2SYM(rb_intern("right_button_up"));
75
+ case CV_EVENT_MBUTTONUP:
76
+ return ID2SYM(rb_intern("middle_button_up"));
77
+ case CV_EVENT_LBUTTONDBLCLK:
78
+ return ID2SYM(rb_intern("left_button_double_click"));
79
+ case CV_EVENT_RBUTTONDBLCLK:
80
+ return ID2SYM(rb_intern("right_button_double_click"));
81
+ case CV_EVENT_MBUTTONDBLCLK:
82
+ return ID2SYM(rb_intern("middle_button_double_click"));
83
+ }
84
+ return Qnil;
85
+ }
86
+
87
+ /*
88
+ * Return true when mouse left button is pushed. Otherwise return false.
89
+ */
90
+ VALUE
91
+ rb_left_button_q(VALUE self)
92
+ {
93
+ return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_LBUTTON ? Qtrue : Qfalse;
94
+ }
95
+
96
+ /*
97
+ * Return true when mouse right button is pushed. Otherwise return false.
98
+ */
99
+ VALUE
100
+ rb_right_button_q(VALUE self)
101
+ {
102
+ return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_RBUTTON ? Qtrue : Qfalse;
103
+ }
104
+
105
+ /*
106
+ * Return true when mouse middle button is pushed. Otherwise return false.
107
+ */
108
+ VALUE
109
+ rb_middle_button_q(VALUE self)
110
+ {
111
+ return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_MBUTTON ? Qtrue : Qfalse;
112
+ }
113
+
114
+ /*
115
+ * Return true when CTRL key is pushed. Otherwise return false.
116
+ */
117
+ VALUE
118
+ rb_ctrl_key_q(VALUE self)
119
+ {
120
+ return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_CTRLKEY ? Qtrue : Qfalse;
121
+ }
122
+
123
+ /*
124
+ * Return true when shift key is pushed. Otherwise return false.
125
+ */
126
+ VALUE
127
+ rb_shift_key_q(VALUE self)
128
+ {
129
+ return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_SHIFTKEY ? Qtrue : Qfalse;
130
+ }
131
+
132
+ /*
133
+ * Return true when ALT key is pushed. Otherwise return false.
134
+ */
135
+ VALUE
136
+ rb_alt_key_q(VALUE self)
137
+ {
138
+ return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_ALTKEY ? Qtrue : Qfalse;
139
+ }
140
+
141
+ VALUE
142
+ new_object(int event, int x, int y, int flags)
143
+ {
144
+ VALUE object = rb_allocate(rb_class());
145
+ MouseEvent *mouseevent = MOUSEEVENT(object);
146
+ mouseevent->point.x = x;
147
+ mouseevent->point.y = y;
148
+ mouseevent->event = event;
149
+ mouseevent->flags = flags;
150
+ return object;
151
+ }
152
+
153
+ void
154
+ init_ruby_class()
155
+ {
156
+ #if 0
157
+ // For documentation using YARD
158
+ VALUE opencv = rb_define_module("OpenCV");
159
+ VALUE GUI = rb_define_module_under(opencv, "GUI");
160
+ VALUE cvpoint = rb_define_class_under(opencv, "CvPoint", rb_cObject);
161
+ #endif
162
+
163
+ if (rb_klass)
164
+ return;
165
+ /*
166
+ * opencv = rb_define_module("OpenCV");
167
+ * GUI = rb_define_module_under(opencv, "GUI");
168
+ * cvpoint = rb_define_class_under(opencv, "CvPoint", rb_cObject);
169
+ */
170
+ VALUE GUI = rb_module_GUI();
171
+ VALUE cvpoint = cCvPoint::rb_class();
172
+ rb_klass = rb_define_class_under(GUI, "MouseEvent", cvpoint);
173
+ rb_define_alloc_func(rb_klass, rb_allocate);
174
+ rb_define_method(rb_klass, "event", RUBY_METHOD_FUNC(rb_event), 0);
175
+ rb_define_method(rb_klass, "left_button?", RUBY_METHOD_FUNC(rb_left_button_q), 0);
176
+ rb_define_method(rb_klass, "right_button?", RUBY_METHOD_FUNC(rb_right_button_q), 0);
177
+ rb_define_method(rb_klass, "middle_button?", RUBY_METHOD_FUNC(rb_middle_button_q), 0);
178
+ rb_define_method(rb_klass, "ctrl_key?", RUBY_METHOD_FUNC(rb_ctrl_key_q), 0);
179
+ rb_define_method(rb_klass, "shift_key?", RUBY_METHOD_FUNC(rb_shift_key_q), 0);
180
+ rb_define_method(rb_klass, "alt_key?", RUBY_METHOD_FUNC(rb_alt_key_q), 0);
181
+ }
182
+
183
+ __NAMESPACE_END_MOUSEEVENT
184
+ __NAMESPACE_END_GUI
185
+ __NAMESPACE_END_OPENCV
186
+
@@ -0,0 +1,56 @@
1
+ /************************************************************
2
+
3
+ mouseevent.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #define __NAMESPACE_BEGIN_MOUSEEVENT namespace cMouseEvent {
11
+ #define __NAMESPACE_END_MOUSEEVENT }
12
+
13
+ #ifndef RUBY_OPENCV_GUI_MOUSEEVENT_H
14
+ #define RUBY_OPENCV_GUI_MOUSEEVENT_H
15
+
16
+ #include "opencv.h"
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_GUI
20
+ __NAMESPACE_BEGIN_MOUSEEVENT
21
+
22
+ typedef struct MouseEvent {
23
+ CvPoint point;
24
+ int event;
25
+ int flags;
26
+ } MouseEvent;
27
+
28
+ VALUE rb_class();
29
+
30
+ void init_ruby_class();
31
+
32
+ VALUE rb_allocate(VALUE klass);
33
+
34
+ VALUE rb_event(VALUE self);
35
+
36
+ VALUE rb_left_button_q(VALUE self);
37
+ VALUE rb_right_button_q(VALUE self);
38
+ VALUE rb_middle_button_q(VALUE self);
39
+ VALUE rb_ctrl_key_q(VALUE self);
40
+ VALUE rb_shift_key_q(VALUE self);
41
+ VALUE rb_alt_key_q(VALUE self);
42
+
43
+ VALUE new_object(int event, int x, int y, int flag);
44
+
45
+ inline MouseEvent *MOUSEEVENT(VALUE object) {
46
+ MouseEvent *ptr;
47
+ Data_Get_Struct(object, MouseEvent, ptr);
48
+ return ptr;
49
+ }
50
+
51
+ __NAMESPACE_END_MOUSEEVENT
52
+ __NAMESPACE_END_GUI
53
+ __NAMESPACE_END_OPENCV
54
+
55
+ #endif // RUBY_OPENCV_GUI_MOUSEEVENT_H
56
+
@@ -0,0 +1,833 @@
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
+ * Register root object.
80
+ */
81
+ void
82
+ register_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
+ unregister_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
+ unregister_object(ptr);
104
+ try {
105
+ cvFree(&ptr);
106
+ }
107
+ catch (cv::Exception& e) {
108
+ raise_cverror(e);
109
+ }
110
+ }
111
+ }
112
+
113
+ /*
114
+ * Release OpenCV specific structure(i.e CvMat, IplImage..) from memory and delete from hashtable.
115
+ */
116
+ void
117
+ release_object(void *ptr)
118
+ {
119
+ if (ptr) {
120
+ unregister_object(ptr);
121
+ try {
122
+ cvRelease(&ptr);
123
+ }
124
+ catch (cv::Exception& e) {
125
+ raise_cverror(e);
126
+ }
127
+ }
128
+ }
129
+
130
+ /*
131
+ * Release IplConvKernel object from memory and delete from hashtable.
132
+ */
133
+ void
134
+ release_iplconvkernel_object(void *ptr)
135
+ {
136
+ if (ptr) {
137
+ unregister_object(ptr);
138
+ try {
139
+ cvReleaseStructuringElement((IplConvKernel**)(&ptr));
140
+ }
141
+ catch (cv::Exception& e) {
142
+ raise_cverror(e);
143
+ }
144
+ }
145
+ }
146
+
147
+ VALUE rb_module;
148
+ VALUE rb_opencv_constants;
149
+
150
+ VALUE
151
+ rb_module_opencv()
152
+ {
153
+ return rb_module;
154
+ }
155
+
156
+ void
157
+ init_ruby_module()
158
+ {
159
+ if (rb_module)
160
+ return;
161
+ rb_module = rb_define_module("OpenCV");
162
+
163
+ /* OpenCV version */
164
+ rb_define_const(rb_module, "CV_VERSION", rb_str_new2(CV_VERSION));
165
+ rb_define_const(rb_module, "CV_MAJOR_VERSION", INT2FIX(CV_MAJOR_VERSION));
166
+ rb_define_const(rb_module, "CV_MINOR_VERSION", INT2FIX(CV_MINOR_VERSION));
167
+ rb_define_const(rb_module, "CV_SUBMINOR_VERSION", INT2FIX(CV_SUBMINOR_VERSION));
168
+
169
+ rb_define_const(rb_module, "CV_VERSION_EPOCH", INT2FIX(CV_VERSION_EPOCH));
170
+ rb_define_const(rb_module, "CV_VERSION_MAJOR", INT2FIX(CV_VERSION_MAJOR));
171
+ rb_define_const(rb_module, "CV_VERSION_MINOR", INT2FIX(CV_VERSION_MINOR));
172
+ rb_define_const(rb_module, "CV_VERSION_REVISION", INT2FIX(CV_VERSION_REVISION));
173
+
174
+ /* 0: 8bit unsigned */
175
+ rb_define_const(rb_module, "CV_8U", INT2FIX(CV_8U));
176
+ /* 1: 8bit signed */
177
+ rb_define_const(rb_module, "CV_8S", INT2FIX(CV_8S));
178
+ /* 2: 16bit unsigned */
179
+ rb_define_const(rb_module, "CV_16U", INT2FIX(CV_16U));
180
+ /* 3: 16bit signed */
181
+ rb_define_const(rb_module, "CV_16S", INT2FIX(CV_16S));
182
+ /* 4: 32bit signed */
183
+ rb_define_const(rb_module, "CV_32S", INT2FIX(CV_32S));
184
+ /* 5: 32bit floating-point */
185
+ rb_define_const(rb_module, "CV_32F", INT2FIX(CV_32F));
186
+ /* 6: 64bit floating-point */
187
+ rb_define_const(rb_module, "CV_64F", INT2FIX(CV_64F));
188
+
189
+ /* Other depth */
190
+ rb_define_const(rb_module, "CV_8UC1", INT2FIX(CV_8UC1));
191
+ rb_define_const(rb_module, "CV_8UC2", INT2FIX(CV_8UC2));
192
+ rb_define_const(rb_module, "CV_8UC3", INT2FIX(CV_8UC3));
193
+ rb_define_const(rb_module, "CV_8UC4", INT2FIX(CV_8UC4));
194
+ rb_define_const(rb_module, "CV_8SC1", INT2FIX(CV_8SC1));
195
+ rb_define_const(rb_module, "CV_8SC2", INT2FIX(CV_8SC2));
196
+ rb_define_const(rb_module, "CV_8SC3", INT2FIX(CV_8SC3));
197
+ rb_define_const(rb_module, "CV_8SC4", INT2FIX(CV_8SC4));
198
+ rb_define_const(rb_module, "CV_16UC1", INT2FIX(CV_16UC1));
199
+ rb_define_const(rb_module, "CV_16UC2", INT2FIX(CV_16UC2));
200
+ rb_define_const(rb_module, "CV_16UC3", INT2FIX(CV_16UC3));
201
+ rb_define_const(rb_module, "CV_16UC4", INT2FIX(CV_16UC4));
202
+ rb_define_const(rb_module, "CV_16SC1", INT2FIX(CV_16SC1));
203
+ rb_define_const(rb_module, "CV_16SC2", INT2FIX(CV_16SC2));
204
+ rb_define_const(rb_module, "CV_16SC3", INT2FIX(CV_16SC3));
205
+ rb_define_const(rb_module, "CV_16SC4", INT2FIX(CV_16SC4));
206
+ rb_define_const(rb_module, "CV_32SC1", INT2FIX(CV_32SC1));
207
+ rb_define_const(rb_module, "CV_32SC2", INT2FIX(CV_32SC2));
208
+ rb_define_const(rb_module, "CV_32SC3", INT2FIX(CV_32SC3));
209
+ rb_define_const(rb_module, "CV_32SC4", INT2FIX(CV_32SC4));
210
+ rb_define_const(rb_module, "CV_32FC1", INT2FIX(CV_32FC1));
211
+ rb_define_const(rb_module, "CV_32FC2", INT2FIX(CV_32FC2));
212
+ rb_define_const(rb_module, "CV_32FC3", INT2FIX(CV_32FC3));
213
+ rb_define_const(rb_module, "CV_32FC4", INT2FIX(CV_32FC4));
214
+ rb_define_const(rb_module, "CV_64FC1", INT2FIX(CV_64FC1));
215
+ rb_define_const(rb_module, "CV_64FC2", INT2FIX(CV_64FC2));
216
+ rb_define_const(rb_module, "CV_64FC3", INT2FIX(CV_64FC3));
217
+ rb_define_const(rb_module, "CV_64FC4", INT2FIX(CV_64FC4));
218
+
219
+ /* Color types of loaded images */
220
+ rb_define_const(rb_module, "CV_LOAD_IMAGE_UNCHANGED", INT2FIX(CV_LOAD_IMAGE_UNCHANGED));
221
+ rb_define_const(rb_module, "CV_LOAD_IMAGE_GRAYSCALE", INT2FIX(CV_LOAD_IMAGE_GRAYSCALE));
222
+ rb_define_const(rb_module, "CV_LOAD_IMAGE_COLOR", INT2FIX(CV_LOAD_IMAGE_COLOR));
223
+ rb_define_const(rb_module, "CV_LOAD_IMAGE_ANYDEPTH", INT2FIX(CV_LOAD_IMAGE_ANYDEPTH));
224
+ rb_define_const(rb_module, "CV_LOAD_IMAGE_ANYCOLOR", INT2FIX(CV_LOAD_IMAGE_ANYCOLOR));
225
+
226
+ /* Format-specific save parameters */
227
+ rb_define_const(rb_module, "CV_IMWRITE_JPEG_QUALITY", INT2FIX(CV_IMWRITE_JPEG_QUALITY));
228
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_COMPRESSION", INT2FIX(CV_IMWRITE_PNG_COMPRESSION));
229
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_STRATEGY", INT2FIX(CV_IMWRITE_PNG_STRATEGY));
230
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_STRATEGY_DEFAULT", INT2FIX(CV_IMWRITE_PNG_STRATEGY_DEFAULT));
231
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_STRATEGY_FILTERED", INT2FIX(CV_IMWRITE_PNG_STRATEGY_FILTERED));
232
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY", INT2FIX(CV_IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY));
233
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_STRATEGY_RLE", INT2FIX(CV_IMWRITE_PNG_STRATEGY_RLE));
234
+ rb_define_const(rb_module, "CV_IMWRITE_PNG_STRATEGY_FIXED", INT2FIX(CV_IMWRITE_PNG_STRATEGY_FIXED));
235
+ rb_define_const(rb_module, "CV_IMWRITE_PXM_BINARY", INT2FIX(CV_IMWRITE_PXM_BINARY));
236
+
237
+ /* Types of morphological operations */
238
+ rb_define_const(rb_module, "CV_MOP_OPEN", INT2FIX(CV_MOP_OPEN));
239
+ rb_define_const(rb_module, "CV_MOP_CLOSE", INT2FIX(CV_MOP_CLOSE));
240
+ rb_define_const(rb_module, "CV_MOP_GRADIENT", INT2FIX(CV_MOP_GRADIENT));
241
+ rb_define_const(rb_module, "CV_MOP_TOPHAT", INT2FIX(CV_MOP_TOPHAT));
242
+ rb_define_const(rb_module, "CV_MOP_BLACKHAT", INT2FIX(CV_MOP_BLACKHAT));
243
+
244
+ /* Shape of the structuring elements */
245
+ rb_define_const(rb_module, "CV_SHAPE_RECT", INT2FIX(CV_SHAPE_RECT));
246
+ rb_define_const(rb_module, "CV_SHAPE_CROSS", INT2FIX(CV_SHAPE_CROSS));
247
+ rb_define_const(rb_module, "CV_SHAPE_ELLIPSE", INT2FIX(CV_SHAPE_ELLIPSE));
248
+ rb_define_const(rb_module, "CV_SHAPE_CUSTOM", INT2FIX(CV_SHAPE_CUSTOM));
249
+
250
+ /* Types of the smoothing */
251
+ rb_define_const(rb_module, "CV_BLUR_NO_SCALE", INT2FIX(CV_BLUR_NO_SCALE));
252
+ rb_define_const(rb_module, "CV_BLUR", INT2FIX(CV_BLUR));
253
+ rb_define_const(rb_module, "CV_GAUSSIAN", INT2FIX(CV_GAUSSIAN));
254
+ rb_define_const(rb_module, "CV_MEDIAN", INT2FIX(CV_MEDIAN));
255
+ rb_define_const(rb_module, "CV_BILATERAL", INT2FIX(CV_BILATERAL));
256
+
257
+ /* Thresholding types */
258
+ rb_define_const(rb_module, "CV_THRESH_BINARY", INT2FIX(CV_THRESH_BINARY));
259
+ rb_define_const(rb_module, "CV_THRESH_BINARY_INV", INT2FIX(CV_THRESH_BINARY_INV));
260
+ rb_define_const(rb_module, "CV_THRESH_TRUNC", INT2FIX(CV_THRESH_TRUNC));
261
+ rb_define_const(rb_module, "CV_THRESH_TOZERO", INT2FIX(CV_THRESH_TOZERO));
262
+ rb_define_const(rb_module, "CV_THRESH_TOZERO_INV", INT2FIX(CV_THRESH_TOZERO_INV));
263
+ rb_define_const(rb_module, "CV_THRESH_OTSU", INT2FIX(CV_THRESH_OTSU));
264
+ rb_define_const(rb_module, "CV_ADAPTIVE_THRESH_GAUSSIAN_C", INT2FIX(CV_ADAPTIVE_THRESH_GAUSSIAN_C));
265
+ rb_define_const(rb_module, "CV_ADAPTIVE_THRESH_MEAN_C", INT2FIX(CV_ADAPTIVE_THRESH_MEAN_C));
266
+
267
+ /* Distance transform distance types */
268
+ rb_define_const(rb_module, "CV_DIST_L1", INT2FIX(CV_DIST_L1));
269
+ rb_define_const(rb_module, "CV_DIST_L2", INT2FIX(CV_DIST_L2));
270
+ rb_define_const(rb_module, "CV_DIST_C", INT2FIX(CV_DIST_C));
271
+
272
+ rb_define_const(rb_module, "CV_DIST_MASK_3", INT2FIX(CV_DIST_MASK_3));
273
+ rb_define_const(rb_module, "CV_DIST_MASK_5", INT2FIX(CV_DIST_MASK_5));
274
+ rb_define_const(rb_module, "CV_DIST_MASK_PRECISE", INT2FIX(CV_DIST_MASK_PRECISE));
275
+
276
+ /* Fit line distance types */
277
+ rb_define_const(rb_module, "CV_DIST_L12", INT2FIX(CV_DIST_L12));
278
+ rb_define_const(rb_module, "CV_DIST_FAIR", INT2FIX(CV_DIST_FAIR));
279
+ rb_define_const(rb_module, "CV_DIST_WELSCH", INT2FIX(CV_DIST_WELSCH));
280
+ rb_define_const(rb_module, "CV_DIST_HUBER", INT2FIX(CV_DIST_HUBER));
281
+
282
+ /* Border type */
283
+ rb_define_const(rb_module, "IPL_BORDER_CONSTANT", INT2FIX(IPL_BORDER_CONSTANT));
284
+ rb_define_const(rb_module, "IPL_BORDER_REPLICATE", INT2FIX(IPL_BORDER_REPLICATE));
285
+
286
+ /* Retrieval mode */
287
+ rb_define_const(rb_module, "CV_RETR_EXTERNAL", INT2FIX(CV_RETR_EXTERNAL));
288
+ rb_define_const(rb_module, "CV_RETR_LIST", INT2FIX(CV_RETR_LIST));
289
+ rb_define_const(rb_module, "CV_RETR_CCOMP", INT2FIX(CV_RETR_CCOMP));
290
+ rb_define_const(rb_module, "CV_RETR_TREE", INT2FIX(CV_RETR_TREE));
291
+
292
+ /* Approximation method */
293
+ rb_define_const(rb_module, "CV_CHAIN_CODE", INT2FIX(CV_CHAIN_CODE));
294
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_NONE", INT2FIX(CV_CHAIN_APPROX_NONE));
295
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_SIMPLE", INT2FIX(CV_CHAIN_APPROX_SIMPLE));
296
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_TC89_L1", INT2FIX(CV_CHAIN_APPROX_TC89_L1));
297
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_TC89_KCOS", INT2FIX(CV_CHAIN_APPROX_TC89_KCOS));
298
+ rb_define_const(rb_module, "CV_LINK_RUNS", INT2FIX(CV_LINK_RUNS));
299
+
300
+ /* Termination criteria for iterative algorithms */
301
+ rb_define_const(rb_module, "CV_TERMCRIT_ITER", INT2FIX(CV_TERMCRIT_ITER));
302
+ rb_define_const(rb_module, "CV_TERMCRIT_NUMBER", INT2FIX(CV_TERMCRIT_NUMBER));
303
+ rb_define_const(rb_module, "CV_TERMCRIT_EPS", INT2FIX(CV_TERMCRIT_EPS));
304
+
305
+ /* Hough transform method */
306
+ rb_define_const(rb_module, "CV_HOUGH_STANDARD", INT2FIX(CV_HOUGH_STANDARD));
307
+ rb_define_const(rb_module, "CV_HOUGH_PROBABILISTIC", INT2FIX(CV_HOUGH_PROBABILISTIC));
308
+ rb_define_const(rb_module, "CV_HOUGH_MULTI_SCALE", INT2FIX(CV_HOUGH_MULTI_SCALE));
309
+ rb_define_const(rb_module, "CV_HOUGH_GRADIENT", INT2FIX(CV_HOUGH_GRADIENT));
310
+
311
+ /* Grab cut mode */
312
+ rb_define_const(rb_module, "GC_INIT_WITH_RECT", INT2FIX(cv::GC_INIT_WITH_RECT));
313
+ rb_define_const(rb_module, "GC_INIT_WITH_MASK", INT2FIX(cv::GC_INIT_WITH_MASK));
314
+ rb_define_const(rb_module, "GC_EVAL", INT2FIX(cv::GC_EVAL));
315
+
316
+ /* Grab cut marker */
317
+ rb_define_const(rb_module, "GC_BGD", INT2FIX(cv::GC_BGD));
318
+ rb_define_const(rb_module, "GC_FGD", INT2FIX(cv::GC_FGD));
319
+ rb_define_const(rb_module, "GC_PR_BGD", INT2FIX(cv::GC_PR_BGD));
320
+ rb_define_const(rb_module, "GC_PR_FGD", INT2FIX(cv::GC_PR_FGD));
321
+
322
+ /* Histogram comparison mode */
323
+ rb_define_const(rb_module, "CV_COMP_CORREL", INT2FIX(CV_COMP_CORREL));
324
+ rb_define_const(rb_module, "CV_COMP_CHISQR", INT2FIX(CV_COMP_CHISQR));
325
+ rb_define_const(rb_module, "CV_COMP_INTERSECT", INT2FIX(CV_COMP_INTERSECT));
326
+ rb_define_const(rb_module, "CV_COMP_BHATTACHARYYA", INT2FIX(CV_COMP_BHATTACHARYYA));
327
+
328
+ /* Inpaint method */
329
+ rb_define_const(rb_module, "CV_INPAINT_NS", INT2FIX(CV_INPAINT_NS));
330
+ rb_define_const(rb_module, "CV_INPAINT_TELEA", INT2FIX(CV_INPAINT_TELEA));
331
+
332
+ /* Match template method */
333
+ rb_define_const(rb_module, "CV_TM_SQDIFF", INT2FIX(CV_TM_SQDIFF));
334
+ rb_define_const(rb_module, "CV_TM_SQDIFF_NORMED", INT2FIX(CV_TM_SQDIFF_NORMED));
335
+ rb_define_const(rb_module, "CV_TM_CCORR", INT2FIX(CV_TM_CCORR));
336
+ rb_define_const(rb_module, "CV_TM_CCORR_NORMED", INT2FIX(CV_TM_CCORR_NORMED));
337
+ rb_define_const(rb_module, "CV_TM_CCOEFF", INT2FIX(CV_TM_CCOEFF));
338
+ rb_define_const(rb_module, "CV_TM_CCOEFF_NORMED", INT2FIX(CV_TM_CCOEFF_NORMED));
339
+
340
+ /* Comparison method */
341
+ rb_define_const(rb_module, "CV_CONTOURS_MATCH_I1", INT2FIX(CV_CONTOURS_MATCH_I1));
342
+ rb_define_const(rb_module, "CV_CONTOURS_MATCH_I2", INT2FIX(CV_CONTOURS_MATCH_I2));
343
+ rb_define_const(rb_module, "CV_CONTOURS_MATCH_I3", INT2FIX(CV_CONTOURS_MATCH_I3));
344
+
345
+ /* Fundamental matrix computing methods */
346
+ rb_define_const(rb_module, "CV_FM_7POINT", INT2FIX(CV_FM_7POINT));
347
+ rb_define_const(rb_module, "CV_FM_8POINT", INT2FIX(CV_FM_8POINT));
348
+ rb_define_const(rb_module, "CV_FM_RANSAC", INT2FIX(CV_FM_RANSAC));
349
+ rb_define_const(rb_module, "CV_FM_LMEDS", INT2FIX(CV_FM_LMEDS));
350
+
351
+ /* Flags of window */
352
+ rb_define_const(rb_module, "CV_WINDOW_AUTOSIZE", INT2FIX(CV_WINDOW_AUTOSIZE));
353
+ rb_define_const(rb_module, "CV_WINDOW_NORMAL", INT2FIX(CV_WINDOW_NORMAL));
354
+ rb_define_const(rb_module, "CV_WINDOW_OPENGL", INT2FIX(CV_WINDOW_OPENGL));
355
+
356
+ /* Object detection mode */
357
+ rb_define_const(rb_module, "CV_HAAR_DO_CANNY_PRUNING", INT2FIX(CV_HAAR_DO_CANNY_PRUNING));
358
+
359
+ /* Interpolation methods */
360
+ rb_define_const(rb_module, "CV_INTER_NN", INT2FIX(CV_INTER_NN));
361
+ rb_define_const(rb_module, "CV_INTER_LINEAR", INT2FIX(CV_INTER_LINEAR));
362
+ rb_define_const(rb_module, "CV_INTER_AREA", INT2FIX(CV_INTER_AREA));
363
+ rb_define_const(rb_module, "CV_INTER_CUBIC", INT2FIX(CV_INTER_CUBIC));
364
+ rb_define_const(rb_module, "CV_INTER_LANCZOS4", INT2FIX(CV_INTER_LANCZOS4));
365
+
366
+ /* Warp affine optional flags */
367
+ rb_define_const(rb_module, "CV_WARP_FILL_OUTLIERS", INT2FIX(CV_WARP_FILL_OUTLIERS));
368
+ rb_define_const(rb_module, "CV_WARP_INVERSE_MAP", INT2FIX(CV_WARP_INVERSE_MAP));
369
+
370
+ /* SVD optional flags */
371
+ rb_define_const(rb_module, "CV_SVD_MODIFY_A", INT2FIX(CV_SVD_MODIFY_A));
372
+ rb_define_const(rb_module, "CV_SVD_U_T", INT2FIX(CV_SVD_U_T));
373
+ rb_define_const(rb_module, "CV_SVD_V_T", INT2FIX(CV_SVD_V_T));
374
+
375
+ /* Norm types */
376
+ rb_define_const(rb_module, "CV_NORM_INF", INT2FIX(cv::NORM_INF));
377
+ rb_define_const(rb_module, "CV_NORM_L1", INT2FIX(cv::NORM_L1));
378
+ rb_define_const(rb_module, "CV_NORM_L2", INT2FIX(cv::NORM_L2));
379
+ rb_define_const(rb_module, "CV_NORM_MINMAX", INT2FIX(cv::NORM_MINMAX));
380
+
381
+ /* Histogram representation format */
382
+ rb_define_const(rb_module, "CV_HIST_ARRAY", INT2FIX(CV_HIST_ARRAY));
383
+ rb_define_const(rb_module, "CV_HIST_SPARSE", INT2FIX(CV_HIST_SPARSE));
384
+ rb_define_const(rb_module, "CV_HIST_TREE", INT2FIX(CV_HIST_TREE));
385
+ rb_define_const(rb_module, "CV_HIST_UNIFORM", INT2FIX(CV_HIST_UNIFORM));
386
+
387
+ /* DFT and DCT flags */
388
+ rb_define_const(rb_module, "CV_DXT_FORWARD", INT2FIX(CV_DXT_FORWARD));
389
+ rb_define_const(rb_module, "CV_DXT_INVERSE", INT2FIX(CV_DXT_INVERSE));
390
+ rb_define_const(rb_module, "CV_DXT_SCALE", INT2FIX(CV_DXT_SCALE));
391
+ rb_define_const(rb_module, "CV_DXT_INV_SCALE", INT2FIX(CV_DXT_INV_SCALE));
392
+ rb_define_const(rb_module, "CV_DXT_INVERSE_SCALE", INT2FIX(CV_DXT_INVERSE_SCALE));
393
+ rb_define_const(rb_module, "CV_DXT_ROWS", INT2FIX(CV_DXT_ROWS));
394
+
395
+ /* FindChessboardCorners flags */
396
+ rb_define_const(rb_module, "CV_CALIB_CB_ADAPTIVE_THRESH", INT2FIX(CV_CALIB_CB_ADAPTIVE_THRESH));
397
+ rb_define_const(rb_module, "CV_CALIB_CB_NORMALIZE_IMAGE", INT2FIX(CV_CALIB_CB_NORMALIZE_IMAGE));
398
+ rb_define_const(rb_module, "CV_CALIB_CB_FILTER_QUADS", INT2FIX(CV_CALIB_CB_FILTER_QUADS));
399
+ rb_define_const(rb_module, "CV_CALIB_CB_FAST_CHECK", INT2FIX(CV_CALIB_CB_FAST_CHECK));
400
+
401
+ /* Color map for cv::applyColorMap */
402
+ rb_define_const(rb_module, "COLORMAP_AUTUMN", INT2FIX(cv::COLORMAP_AUTUMN));
403
+ rb_define_const(rb_module, "COLORMAP_BONE", INT2FIX(cv::COLORMAP_BONE));
404
+ rb_define_const(rb_module, "COLORMAP_JET", INT2FIX(cv::COLORMAP_JET));
405
+ rb_define_const(rb_module, "COLORMAP_WINTER", INT2FIX(cv::COLORMAP_WINTER));
406
+ rb_define_const(rb_module, "COLORMAP_RAINBOW", INT2FIX(cv::COLORMAP_RAINBOW));
407
+ rb_define_const(rb_module, "COLORMAP_OCEAN", INT2FIX(cv::COLORMAP_OCEAN));
408
+ rb_define_const(rb_module, "COLORMAP_SUMMER", INT2FIX(cv::COLORMAP_SUMMER));
409
+ rb_define_const(rb_module, "COLORMAP_SPRING", INT2FIX(cv::COLORMAP_SPRING));
410
+ rb_define_const(rb_module, "COLORMAP_COOL", INT2FIX(cv::COLORMAP_COOL));
411
+ rb_define_const(rb_module, "COLORMAP_HSV", INT2FIX(cv::COLORMAP_HSV));
412
+ rb_define_const(rb_module, "COLORMAP_PINK", INT2FIX(cv::COLORMAP_PINK));
413
+ rb_define_const(rb_module, "COLORMAP_HOT", INT2FIX(cv::COLORMAP_HOT));
414
+
415
+ VALUE inversion_method = rb_hash_new();
416
+ /* {:lu, :svd, :svd_sym(:svd_symmetric)}: Inversion method */
417
+ rb_define_const(rb_module, "INVERSION_METHOD", inversion_method);
418
+ REGISTER_HASH(inversion_method, "lu", CV_LU);
419
+ REGISTER_HASH(inversion_method, "svd", CV_SVD);
420
+ REGISTER_HASH(inversion_method, "svd_sym", CV_SVD_SYM);
421
+ REGISTER_HASH(inversion_method, "svd_symmetric", CV_SVD_SYM);
422
+
423
+ VALUE dxt_flag = rb_hash_new();
424
+ /* {:forward, :inverse, :scale, :rows}: DFT and DCT flags */
425
+ rb_define_const(rb_module, "DXT_FLAG", dxt_flag);
426
+ REGISTER_HASH(dxt_flag, "forward", CV_DXT_FORWARD);
427
+ REGISTER_HASH(dxt_flag, "inverse", CV_DXT_INVERSE);
428
+ REGISTER_HASH(dxt_flag, "scale", CV_DXT_SCALE);
429
+ REGISTER_HASH(dxt_flag, "rows", CV_DXT_ROWS);
430
+
431
+ VALUE interpolation_method = rb_hash_new();
432
+ /* {:nn, :linear, :area, :cubic}: Interpolation method */
433
+ rb_define_const(rb_module, "INTERPOLATION_METHOD", interpolation_method);
434
+ REGISTER_HASH(interpolation_method, "nn", CV_INTER_NN);
435
+ REGISTER_HASH(interpolation_method, "linear", CV_INTER_LINEAR);
436
+ REGISTER_HASH(interpolation_method, "area", CV_INTER_AREA);
437
+ REGISTER_HASH(interpolation_method, "cubic", CV_INTER_CUBIC);
438
+ REGISTER_HASH(interpolation_method, "lanczos4", CV_INTER_LANCZOS4);
439
+
440
+ VALUE warp_flag = rb_hash_new();
441
+ /* {:fill_outliers, :inverse_map}: Warp affine optional flags */
442
+ rb_define_const(rb_module, "WARP_FLAG", warp_flag);
443
+ REGISTER_HASH(warp_flag, "fill_outliers", CV_WARP_FILL_OUTLIERS);
444
+ REGISTER_HASH(warp_flag, "inverse_map", CV_WARP_INVERSE_MAP);
445
+
446
+ VALUE homography_calc_method = rb_hash_new();
447
+ /* {:all, :ransac, :lmeds}: Methods used to computed homography matrix */
448
+ rb_define_const(rb_module, "HOMOGRAPHY_CALC_METHOD", homography_calc_method);
449
+ REGISTER_HASH(homography_calc_method, "all", 0);
450
+ REGISTER_HASH(homography_calc_method, "ransac", CV_RANSAC);
451
+ REGISTER_HASH(homography_calc_method, "lmeds", CV_LMEDS);
452
+
453
+ VALUE depth = rb_hash_new();
454
+ /* {:cv8u, :cv8s, :cv16u, :cv16s, :cv32s, :cv32f, :cv64f}: Depth of each pixel. */
455
+ rb_define_const(rb_module, "DEPTH", depth);
456
+ REGISTER_HASH(depth, "cv8u", CV_8U);
457
+ REGISTER_HASH(depth, "cv8s", CV_8S);
458
+ REGISTER_HASH(depth, "cv16u", CV_16U);
459
+ REGISTER_HASH(depth, "cv16s", CV_16S);
460
+ REGISTER_HASH(depth, "cv32s", CV_32S);
461
+ REGISTER_HASH(depth, "cv32f", CV_32F);
462
+ REGISTER_HASH(depth, "cv64f", CV_64F);
463
+
464
+ VALUE connectivity = rb_hash_new();
465
+ /* {:aa(:anti_alias)}: Determined by the closeness of pixel values */
466
+ rb_define_const(rb_module, "CONNECTIVITY", connectivity);
467
+ REGISTER_HASH(connectivity, "aa", CV_AA);
468
+ REGISTER_HASH(connectivity, "anti_alias", CV_AA);
469
+
470
+ VALUE structuring_element_shape = rb_hash_new();
471
+ /* {:rect, :cross, :ellipse, :custom}: Shape of the structuring elements */
472
+ rb_define_const(rb_module, "STRUCTURING_ELEMENT_SHAPE", structuring_element_shape);
473
+ REGISTER_HASH(structuring_element_shape, "rect", CV_SHAPE_RECT);
474
+ REGISTER_HASH(structuring_element_shape, "cross", CV_SHAPE_CROSS);
475
+ REGISTER_HASH(structuring_element_shape, "ellipse", CV_SHAPE_ELLIPSE);
476
+ REGISTER_HASH(structuring_element_shape, "custom", CV_SHAPE_CUSTOM);
477
+
478
+ VALUE retrieval_mode = rb_hash_new();
479
+ /* {:external, :list, :ccomp, :tree}: Retrieval mode */
480
+ rb_define_const(rb_module, "RETRIEVAL_MODE", retrieval_mode);
481
+ REGISTER_HASH(retrieval_mode, "external", CV_RETR_EXTERNAL);
482
+ REGISTER_HASH(retrieval_mode, "list", CV_RETR_LIST);
483
+ REGISTER_HASH(retrieval_mode, "ccomp", CV_RETR_CCOMP);
484
+ REGISTER_HASH(retrieval_mode, "tree", CV_RETR_TREE);
485
+
486
+ VALUE approx_chain_method = rb_hash_new();
487
+ /* {:code, :approx_none, :approx_simple, :apporx_tc89_11, :approx_tc89_kcos}: Approximation method */
488
+ rb_define_const(rb_module, "APPROX_CHAIN_METHOD", approx_chain_method);
489
+ REGISTER_HASH(approx_chain_method, "code", CV_CHAIN_CODE);
490
+ REGISTER_HASH(approx_chain_method, "approx_none", CV_CHAIN_APPROX_NONE);
491
+ REGISTER_HASH(approx_chain_method, "approx_simple", CV_CHAIN_APPROX_SIMPLE);
492
+ REGISTER_HASH(approx_chain_method, "approx_tc89_l1", CV_CHAIN_APPROX_TC89_L1);
493
+ REGISTER_HASH(approx_chain_method, "approx_tc89_kcos", CV_CHAIN_APPROX_TC89_KCOS);
494
+
495
+ VALUE approx_poly_method = rb_hash_new();
496
+ /* {:dp}: Approximation method (polygon) */
497
+ rb_define_const(rb_module, "APPROX_POLY_METHOD", approx_poly_method);
498
+ REGISTER_HASH(approx_poly_method, "dp", CV_POLY_APPROX_DP);
499
+
500
+ VALUE match_template_method = rb_hash_new();
501
+ /* {:sqdiff, :sqdiff_normed, :ccorr, :ccorr_normed, :ccoeff, :ccoeff_normed}: Match template method */
502
+ rb_define_const(rb_module, "MATCH_TEMPLATE_METHOD", match_template_method);
503
+ REGISTER_HASH(match_template_method, "sqdiff", CV_TM_SQDIFF);
504
+ REGISTER_HASH(match_template_method, "sqdiff_normed", CV_TM_SQDIFF_NORMED);
505
+ REGISTER_HASH(match_template_method, "ccorr", CV_TM_CCORR);
506
+ REGISTER_HASH(match_template_method, "ccorr_normed", CV_TM_CCORR_NORMED);
507
+ REGISTER_HASH(match_template_method, "ccoeff", CV_TM_CCOEFF);
508
+ REGISTER_HASH(match_template_method, "ccoeff_normed", CV_TM_CCOEFF_NORMED);
509
+
510
+ VALUE morphological_operation = rb_hash_new();
511
+ /* {:open, :close, :gradient, :tophat, :blackhat}: Types of morphological operations */
512
+ rb_define_const(rb_module, "MORPHOLOGICAL_OPERATION", morphological_operation);
513
+ REGISTER_HASH(morphological_operation, "open", CV_MOP_OPEN);
514
+ REGISTER_HASH(morphological_operation, "close", CV_MOP_CLOSE);
515
+ REGISTER_HASH(morphological_operation, "gradient", CV_MOP_GRADIENT);
516
+ REGISTER_HASH(morphological_operation, "tophat", CV_MOP_TOPHAT);
517
+ REGISTER_HASH(morphological_operation, "blackhat", CV_MOP_BLACKHAT);
518
+
519
+ VALUE smoothing_type = rb_hash_new();
520
+ /* {:blur_no_scale, :blur, :gaussian, :median, :bilateral}: Types of smoothing */
521
+ rb_define_const(rb_module, "SMOOTHING_TYPE", smoothing_type);
522
+ REGISTER_HASH(smoothing_type, "blur_no_scale", CV_BLUR_NO_SCALE);
523
+ REGISTER_HASH(smoothing_type, "blur", CV_BLUR);
524
+ REGISTER_HASH(smoothing_type, "gaussian", CV_GAUSSIAN);
525
+ REGISTER_HASH(smoothing_type, "median", CV_MEDIAN);
526
+ REGISTER_HASH(smoothing_type, "bilateral", CV_BILATERAL);
527
+
528
+ VALUE adaptive_method = rb_hash_new();
529
+ /* {:mean_c, :gaussian_c}: Adaptive thresholding algorithm */
530
+ rb_define_const(rb_module, "ADAPTIVE_METHOD", adaptive_method);
531
+ REGISTER_HASH(adaptive_method, "mean_c", CV_ADAPTIVE_THRESH_MEAN_C);
532
+ REGISTER_HASH(adaptive_method, "gaussian_c", CV_ADAPTIVE_THRESH_GAUSSIAN_C);
533
+
534
+ VALUE threshold_type = rb_hash_new();
535
+ /* {:binary, :binary_inv, :trunc, :tozero, :tozero_inv, :otsu} : Thresholding types */
536
+ rb_define_const(rb_module, "THRESHOLD_TYPE", threshold_type);
537
+ REGISTER_HASH(threshold_type, "binary", CV_THRESH_BINARY);
538
+ REGISTER_HASH(threshold_type, "binary_inv", CV_THRESH_BINARY_INV);
539
+ REGISTER_HASH(threshold_type, "trunc", CV_THRESH_TRUNC);
540
+ REGISTER_HASH(threshold_type, "tozero", CV_THRESH_TOZERO);
541
+ REGISTER_HASH(threshold_type, "tozero_inv", CV_THRESH_TOZERO_INV);
542
+ REGISTER_HASH(threshold_type, "otsu", CV_THRESH_OTSU);
543
+
544
+ VALUE hough_transform_method = rb_hash_new();
545
+ /* {:standard, :probabilistic, :multi_scale} : Hough transform method */
546
+ rb_define_const(rb_module, "HOUGH_TRANSFORM_METHOD", hough_transform_method);
547
+ REGISTER_HASH(hough_transform_method, "standard", CV_HOUGH_STANDARD);
548
+ REGISTER_HASH(hough_transform_method, "probabilistic", CV_HOUGH_PROBABILISTIC);
549
+ REGISTER_HASH(hough_transform_method, "multi_scale", CV_HOUGH_MULTI_SCALE);
550
+ REGISTER_HASH(hough_transform_method, "gradient", CV_HOUGH_GRADIENT);
551
+
552
+ VALUE inpaint_method = rb_hash_new();
553
+ /* {:ns, :telea} : Inpaint method */
554
+ rb_define_const(rb_module, "INPAINT_METHOD", inpaint_method);
555
+ REGISTER_HASH(inpaint_method, "ns", CV_INPAINT_NS);
556
+ REGISTER_HASH(inpaint_method, "telea", CV_INPAINT_TELEA);
557
+
558
+ VALUE compare_hist_method = rb_hash_new();
559
+ /* histogram comparison method method */
560
+ rb_define_const(rb_module, "COMPARE_HIST_METHOD", compare_hist_method);
561
+ REGISTER_HASH(compare_hist_method, "correl", CV_COMP_CORREL);
562
+ REGISTER_HASH(compare_hist_method, "chisqr", CV_COMP_CHISQR);
563
+ REGISTER_HASH(compare_hist_method, "intersect", CV_COMP_INTERSECT);
564
+ REGISTER_HASH(compare_hist_method, "bhattacharyya", CV_COMP_BHATTACHARYYA);
565
+
566
+ VALUE comparison_method = rb_hash_new();
567
+ /* Comparison method */
568
+ rb_define_const(rb_module, "COMPARISON_METHOD", comparison_method);
569
+ REGISTER_HASH(comparison_method, "i1", CV_CONTOURS_MATCH_I1);
570
+ REGISTER_HASH(comparison_method, "i2", CV_CONTOURS_MATCH_I2);
571
+ REGISTER_HASH(comparison_method, "i3", CV_CONTOURS_MATCH_I3);
572
+
573
+ /* color convert methods */
574
+ rb_define_module_function(rb_module, "BGR2BGRA", RUBY_METHOD_FUNC(rb_BGR2BGRA), 1);
575
+ rb_define_module_function(rb_module, "RGB2RGBA", RUBY_METHOD_FUNC(rb_RGB2RGBA), 1);
576
+ rb_define_module_function(rb_module, "BGRA2BGR", RUBY_METHOD_FUNC(rb_BGRA2BGR), 1);
577
+ rb_define_module_function(rb_module, "RGBA2RGB", RUBY_METHOD_FUNC(rb_RGBA2RGB), 1);
578
+ rb_define_module_function(rb_module, "BGR2RGBA", RUBY_METHOD_FUNC(rb_BGR2RGBA), 1);
579
+ rb_define_module_function(rb_module, "RGB2BGRA", RUBY_METHOD_FUNC(rb_RGB2BGRA), 1);
580
+ rb_define_module_function(rb_module, "RGBA2BGR", RUBY_METHOD_FUNC(rb_RGBA2BGR), 1);
581
+ rb_define_module_function(rb_module, "BGRA2RGB", RUBY_METHOD_FUNC(rb_BGRA2RGB), 1);
582
+ rb_define_module_function(rb_module, "BGR2RGB", RUBY_METHOD_FUNC(rb_BGR2RGB), 1);
583
+ rb_define_module_function(rb_module, "RGB2BGR", RUBY_METHOD_FUNC(rb_RGB2BGR), 1);
584
+ rb_define_module_function(rb_module, "BGRA2RGBA", RUBY_METHOD_FUNC(rb_BGRA2RGBA), 1);
585
+ rb_define_module_function(rb_module, "RGBA2BGRA", RUBY_METHOD_FUNC(rb_RGBA2BGRA), 1);
586
+ rb_define_module_function(rb_module, "BGR2GRAY", RUBY_METHOD_FUNC(rb_BGR2GRAY), 1);
587
+ rb_define_module_function(rb_module, "RGB2GRAY", RUBY_METHOD_FUNC(rb_RGB2GRAY), 1);
588
+ rb_define_module_function(rb_module, "GRAY2BGR", RUBY_METHOD_FUNC(rb_GRAY2BGR), 1);
589
+ rb_define_module_function(rb_module, "GRAY2RGB", RUBY_METHOD_FUNC(rb_GRAY2RGB), 1);
590
+ rb_define_module_function(rb_module, "GRAY2BGRA", RUBY_METHOD_FUNC(rb_GRAY2BGRA), 1);
591
+ rb_define_module_function(rb_module, "GRAY2RGBA", RUBY_METHOD_FUNC(rb_GRAY2RGBA), 1);
592
+ rb_define_module_function(rb_module, "BGRA2GRAY", RUBY_METHOD_FUNC(rb_BGRA2GRAY), 1);
593
+ rb_define_module_function(rb_module, "RGBA2GRAY", RUBY_METHOD_FUNC(rb_RGBA2GRAY), 1);
594
+ rb_define_module_function(rb_module, "BGR2BGR565", RUBY_METHOD_FUNC(rb_BGR2BGR565), 1);
595
+ rb_define_module_function(rb_module, "RGB2BGR565", RUBY_METHOD_FUNC(rb_RGB2BGR565), 1);
596
+ rb_define_module_function(rb_module, "BGR5652BGR", RUBY_METHOD_FUNC(rb_BGR5652BGR), 1);
597
+ rb_define_module_function(rb_module, "BGR5652RGB", RUBY_METHOD_FUNC(rb_BGR5652RGB), 1);
598
+ rb_define_module_function(rb_module, "BGRA2BGR565", RUBY_METHOD_FUNC(rb_BGRA2BGR565), 1);
599
+ rb_define_module_function(rb_module, "RGBA2BGR565", RUBY_METHOD_FUNC(rb_RGBA2BGR565), 1);
600
+ rb_define_module_function(rb_module, "BGR5652BGRA", RUBY_METHOD_FUNC(rb_BGR5652BGRA), 1);
601
+ rb_define_module_function(rb_module, "BGR5652RGBA", RUBY_METHOD_FUNC(rb_BGR5652RGBA), 1);
602
+ rb_define_module_function(rb_module, "GRAY2BGR565", RUBY_METHOD_FUNC(rb_GRAY2BGR565), 1);
603
+ rb_define_module_function(rb_module, "BGR5652GRAY", RUBY_METHOD_FUNC(rb_BGR5652GRAY), 1);
604
+ rb_define_module_function(rb_module, "BGR2BGR555", RUBY_METHOD_FUNC(rb_BGR2BGR555), 1);
605
+ rb_define_module_function(rb_module, "RGB2BGR555", RUBY_METHOD_FUNC(rb_RGB2BGR555), 1);
606
+ rb_define_module_function(rb_module, "BGR5552BGR", RUBY_METHOD_FUNC(rb_BGR5552BGR), 1);
607
+ rb_define_module_function(rb_module, "BGR5552RGB", RUBY_METHOD_FUNC(rb_BGR5552RGB), 1);
608
+ rb_define_module_function(rb_module, "BGRA2BGR555", RUBY_METHOD_FUNC(rb_BGRA2BGR555), 1);
609
+ rb_define_module_function(rb_module, "RGBA2BGR555", RUBY_METHOD_FUNC(rb_RGBA2BGR555), 1);
610
+ rb_define_module_function(rb_module, "BGR5552BGRA", RUBY_METHOD_FUNC(rb_BGR5552BGRA), 1);
611
+ rb_define_module_function(rb_module, "BGR5552RGBA", RUBY_METHOD_FUNC(rb_BGR5552RGBA), 1);
612
+ rb_define_module_function(rb_module, "GRAY2BGR555", RUBY_METHOD_FUNC(rb_GRAY2BGR555), 1);
613
+ rb_define_module_function(rb_module, "BGR5552GRAY", RUBY_METHOD_FUNC(rb_BGR5552GRAY), 1);
614
+ rb_define_module_function(rb_module, "BGR2XYZ", RUBY_METHOD_FUNC(rb_BGR2XYZ), 1);
615
+ rb_define_module_function(rb_module, "RGB2XYZ", RUBY_METHOD_FUNC(rb_RGB2XYZ), 1);
616
+ rb_define_module_function(rb_module, "XYZ2BGR", RUBY_METHOD_FUNC(rb_XYZ2BGR), 1);
617
+ rb_define_module_function(rb_module, "XYZ2RGB", RUBY_METHOD_FUNC(rb_XYZ2RGB), 1);
618
+ rb_define_module_function(rb_module, "BGR2YCrCb", RUBY_METHOD_FUNC(rb_BGR2YCrCb), 1);
619
+ rb_define_module_function(rb_module, "RGB2YCrCb", RUBY_METHOD_FUNC(rb_RGB2YCrCb), 1);
620
+ rb_define_module_function(rb_module, "YCrCb2BGR", RUBY_METHOD_FUNC(rb_YCrCb2BGR), 1);
621
+ rb_define_module_function(rb_module, "YCrCb2RGB", RUBY_METHOD_FUNC(rb_YCrCb2RGB), 1);
622
+ rb_define_module_function(rb_module, "BGR2HSV", RUBY_METHOD_FUNC(rb_BGR2HSV), 1);
623
+ rb_define_module_function(rb_module, "RGB2HSV", RUBY_METHOD_FUNC(rb_RGB2HSV), 1);
624
+ rb_define_module_function(rb_module, "BGR2Lab", RUBY_METHOD_FUNC(rb_BGR2Lab), 1);
625
+ rb_define_module_function(rb_module, "RGB2Lab", RUBY_METHOD_FUNC(rb_RGB2Lab), 1);
626
+ rb_define_module_function(rb_module, "BayerBG2BGR", RUBY_METHOD_FUNC(rb_BayerBG2BGR), 1);
627
+ rb_define_module_function(rb_module, "BayerGB2BGR", RUBY_METHOD_FUNC(rb_BayerGB2BGR), 1);
628
+ rb_define_module_function(rb_module, "BayerRG2BGR", RUBY_METHOD_FUNC(rb_BayerRG2BGR), 1);
629
+ rb_define_module_function(rb_module, "BayerGR2BGR", RUBY_METHOD_FUNC(rb_BayerGR2BGR), 1);
630
+ rb_define_module_function(rb_module, "BayerBG2RGB", RUBY_METHOD_FUNC(rb_BayerBG2RGB), 1);
631
+ rb_define_module_function(rb_module, "BayerGB2RGB", RUBY_METHOD_FUNC(rb_BayerGB2RGB), 1);
632
+ rb_define_module_function(rb_module, "BayerRG2RGB", RUBY_METHOD_FUNC(rb_BayerRG2RGB), 1);
633
+ rb_define_module_function(rb_module, "BayerGR2RGB", RUBY_METHOD_FUNC(rb_BayerGR2RGB), 1);
634
+ rb_define_module_function(rb_module, "BGR2Luv", RUBY_METHOD_FUNC(rb_BGR2Luv), 1);
635
+ rb_define_module_function(rb_module, "RGB2Luv", RUBY_METHOD_FUNC(rb_RGB2Luv), 1);
636
+ rb_define_module_function(rb_module, "BGR2HLS", RUBY_METHOD_FUNC(rb_BGR2HLS), 1);
637
+ rb_define_module_function(rb_module, "RGB2HLS", RUBY_METHOD_FUNC(rb_RGB2HLS), 1);
638
+ rb_define_module_function(rb_module, "HSV2BGR", RUBY_METHOD_FUNC(rb_HSV2BGR), 1);
639
+ rb_define_module_function(rb_module, "HSV2RGB", RUBY_METHOD_FUNC(rb_HSV2RGB), 1);
640
+ rb_define_module_function(rb_module, "Lab2BGR", RUBY_METHOD_FUNC(rb_Lab2BGR), 1);
641
+ rb_define_module_function(rb_module, "Lab2RGB", RUBY_METHOD_FUNC(rb_Lab2RGB), 1);
642
+ rb_define_module_function(rb_module, "Luv2BGR", RUBY_METHOD_FUNC(rb_Luv2BGR), 1);
643
+ rb_define_module_function(rb_module, "Luv2RGB", RUBY_METHOD_FUNC(rb_Luv2RGB), 1);
644
+ rb_define_module_function(rb_module, "HLS2BGR", RUBY_METHOD_FUNC(rb_HLS2BGR), 1);
645
+ rb_define_module_function(rb_module, "HLS2RGB", RUBY_METHOD_FUNC(rb_HLS2RGB), 1);
646
+
647
+ rb_define_module_function(rb_module, "build_information", RUBY_METHOD_FUNC(rb_build_information), 0);
648
+ }
649
+
650
+ #define CREATE_CVTCOLOR_FUNC(rb_func_name, c_const_name, src_cn, dest_cn) \
651
+ VALUE rb_func_name(VALUE klass, VALUE image) \
652
+ { \
653
+ VALUE dest = Qnil; \
654
+ CvArr* img_ptr = CVARR(image); \
655
+ try { \
656
+ int type = cvGetElemType(img_ptr); \
657
+ if (CV_MAT_CN(type) != src_cn) \
658
+ rb_raise(rb_eArgError, "argument 1 should be %d-channel.", src_cn); \
659
+ dest = cCvMat::new_mat_kind_object(cvGetSize(img_ptr), image, CV_MAT_DEPTH(type), dest_cn); \
660
+ cvCvtColor(img_ptr, CVARR(dest), c_const_name); \
661
+ } \
662
+ catch (cv::Exception& e) { \
663
+ raise_cverror(e); \
664
+ } \
665
+ return dest; \
666
+ }
667
+
668
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGRA, CV_BGR2BGRA, 3, 4);
669
+ CREATE_CVTCOLOR_FUNC(rb_RGB2RGBA, CV_RGB2RGBA, 3, 4);
670
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR, CV_BGRA2BGR, 4, 3);
671
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2RGB, CV_RGBA2RGB, 4, 3);
672
+ CREATE_CVTCOLOR_FUNC(rb_BGR2RGBA, CV_BGR2RGBA, 3, 4);
673
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGRA, CV_RGB2BGRA, 3, 4);
674
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR, CV_RGBA2BGR, 4, 3);
675
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2RGB, CV_BGRA2RGB, 4, 3);
676
+ CREATE_CVTCOLOR_FUNC(rb_BGR2RGB, CV_BGR2RGB, 3, 3);
677
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR, CV_RGB2BGR, 3, 3);
678
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2RGBA, CV_BGRA2RGBA, 4, 4);
679
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGRA, CV_RGBA2BGRA, 4, 4);
680
+ CREATE_CVTCOLOR_FUNC(rb_BGR2GRAY, CV_BGR2GRAY, 3, 1);
681
+ CREATE_CVTCOLOR_FUNC(rb_RGB2GRAY, CV_RGB2GRAY, 3, 1);
682
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR, CV_GRAY2BGR, 1, 3);
683
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2RGB, CV_GRAY2RGB, 1, 3);
684
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGRA, CV_GRAY2BGRA, 1, 4);
685
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2RGBA, CV_GRAY2RGBA, 1, 4);
686
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2GRAY, CV_BGRA2GRAY, 4, 1);
687
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2GRAY, CV_RGBA2GRAY, 4, 1);
688
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGR565, CV_BGR2BGR565, 3, 3);
689
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR565, CV_RGB2BGR565, 3, 3);
690
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652BGR, CV_BGR5652BGR, 3, 3);
691
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652RGB, CV_BGR5652RGB, 3, 3);
692
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR565, CV_BGRA2BGR565, 4, 3);
693
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR565, CV_RGBA2BGR565, 4, 3);
694
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652BGRA, CV_BGR5652BGRA, 3, 4);
695
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652RGBA, CV_BGR5652RGBA, 3, 4);
696
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR565, CV_GRAY2BGR565, 1, 3);
697
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652GRAY, CV_BGR5652GRAY, 3, 1);
698
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGR555, CV_BGR2BGR555, 3, 3);
699
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR555, CV_RGB2BGR555, 3, 3);
700
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552BGR, CV_BGR5552BGR, 3, 3);
701
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552RGB, CV_BGR5552RGB, 3, 3);
702
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR555, CV_BGRA2BGR555, 4, 3);
703
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR555, CV_RGBA2BGR555, 4, 3);
704
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552BGRA, CV_BGR5552BGRA, 3, 4);
705
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552RGBA, CV_BGR5552RGBA, 3, 4);
706
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR555, CV_GRAY2BGR555, 1, 3);
707
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552GRAY, CV_BGR5552GRAY, 3, 1);
708
+ CREATE_CVTCOLOR_FUNC(rb_BGR2XYZ, CV_BGR2XYZ, 3, 3);
709
+ CREATE_CVTCOLOR_FUNC(rb_RGB2XYZ, CV_RGB2XYZ, 3, 3);
710
+ CREATE_CVTCOLOR_FUNC(rb_XYZ2BGR, CV_XYZ2BGR, 3, 3);
711
+ CREATE_CVTCOLOR_FUNC(rb_XYZ2RGB, CV_XYZ2RGB, 3, 3);
712
+ CREATE_CVTCOLOR_FUNC(rb_BGR2YCrCb, CV_BGR2YCrCb, 3, 3);
713
+ CREATE_CVTCOLOR_FUNC(rb_RGB2YCrCb, CV_RGB2YCrCb, 3, 3);
714
+ CREATE_CVTCOLOR_FUNC(rb_YCrCb2BGR, CV_YCrCb2BGR, 3, 3);
715
+ CREATE_CVTCOLOR_FUNC(rb_YCrCb2RGB, CV_YCrCb2RGB, 0, 3);
716
+ CREATE_CVTCOLOR_FUNC(rb_BGR2HSV, CV_BGR2HSV, 3, 3);
717
+ CREATE_CVTCOLOR_FUNC(rb_RGB2HSV, CV_RGB2HSV, 3, 3);
718
+ CREATE_CVTCOLOR_FUNC(rb_BGR2Lab, CV_BGR2Lab, 3, 3);
719
+ CREATE_CVTCOLOR_FUNC(rb_RGB2Lab, CV_RGB2Lab, 3, 3);
720
+ CREATE_CVTCOLOR_FUNC(rb_BayerBG2BGR, CV_BayerBG2BGR, 3, 3);
721
+ CREATE_CVTCOLOR_FUNC(rb_BayerGB2BGR, CV_BayerGB2BGR, 3, 3);
722
+ CREATE_CVTCOLOR_FUNC(rb_BayerRG2BGR, CV_BayerRG2BGR, 3, 3);
723
+ CREATE_CVTCOLOR_FUNC(rb_BayerGR2BGR, CV_BayerGR2BGR, 3, 3);
724
+ CREATE_CVTCOLOR_FUNC(rb_BayerBG2RGB, CV_BayerBG2RGB, 3, 3);
725
+ CREATE_CVTCOLOR_FUNC(rb_BayerGB2RGB, CV_BayerGB2RGB, 3, 3);
726
+ CREATE_CVTCOLOR_FUNC(rb_BayerRG2RGB, CV_BayerRG2RGB, 3, 3);
727
+ CREATE_CVTCOLOR_FUNC(rb_BayerGR2RGB, CV_BayerGR2RGB, 3, 3);
728
+ CREATE_CVTCOLOR_FUNC(rb_BGR2Luv, CV_BGR2Luv, 3, 3);
729
+ CREATE_CVTCOLOR_FUNC(rb_RGB2Luv, CV_RGB2Luv, 3, 3);
730
+ CREATE_CVTCOLOR_FUNC(rb_BGR2HLS, CV_BGR2HLS, 3, 3);
731
+ CREATE_CVTCOLOR_FUNC(rb_RGB2HLS, CV_RGB2HLS, 3, 3);
732
+ CREATE_CVTCOLOR_FUNC(rb_HSV2BGR, CV_HSV2BGR, 3, 3);
733
+ CREATE_CVTCOLOR_FUNC(rb_HSV2RGB, CV_HSV2RGB, 3, 3);
734
+ CREATE_CVTCOLOR_FUNC(rb_Lab2BGR, CV_Lab2BGR, 3, 3);
735
+ CREATE_CVTCOLOR_FUNC(rb_Lab2RGB, CV_Lab2RGB, 3, 3);
736
+ CREATE_CVTCOLOR_FUNC(rb_Luv2BGR, CV_Luv2BGR, 3, 3);
737
+ CREATE_CVTCOLOR_FUNC(rb_Luv2RGB, CV_Luv2RGB, 3, 3);
738
+ CREATE_CVTCOLOR_FUNC(rb_HLS2BGR, CV_HLS2BGR, 3, 3);
739
+ CREATE_CVTCOLOR_FUNC(rb_HLS2RGB, CV_HLS2RGB, 3, 3);
740
+
741
+ VALUE
742
+ rb_build_information(VALUE klass)
743
+ {
744
+ const char* ptr = cv::getBuildInformation().c_str();
745
+ return rb_str_new(ptr, strlen(ptr));
746
+ }
747
+
748
+
749
+ int
750
+ error_callback(int status, const char *function_name, const char *error_message,
751
+ const char *file_name, int line, void *user_data)
752
+ {
753
+ // dummy
754
+ return 0;
755
+ }
756
+
757
+ __NAMESPACE_END_OPENCV
758
+
759
+ extern "C" {
760
+ void
761
+ Init_opencv()
762
+ {
763
+ cvRedirectError((CvErrorCallback)mOpenCV::error_callback);
764
+
765
+ mOpenCV::init_ruby_module();
766
+
767
+ mOpenCV::cCvError::init_ruby_class();
768
+ mOpenCV::cCvPoint::init_ruby_class();
769
+ mOpenCV::cCvPoint2D32f::init_ruby_class();
770
+ mOpenCV::cCvPoint3D32f::init_ruby_class();
771
+ mOpenCV::cCvSize::init_ruby_class();
772
+ mOpenCV::cCvSize2D32f::init_ruby_class();
773
+ mOpenCV::cCvRect::init_ruby_class();
774
+ mOpenCV::cCvScalar::init_ruby_class();
775
+ mOpenCV::cCvSlice::init_ruby_class();
776
+ mOpenCV::cCvTermCriteria::init_ruby_class();
777
+ mOpenCV::cCvBox2D::init_ruby_class();
778
+ mOpenCV::cCvFont::init_ruby_class();
779
+ mOpenCV::cIplConvKernel::init_ruby_class();
780
+ mOpenCV::cCvMoments::init_ruby_class();
781
+ mOpenCV::cCvHuMoments::init_ruby_class();
782
+ mOpenCV::cCvConvexityDefect::init_ruby_class();
783
+
784
+ mOpenCV::cCvSURFPoint::init_ruby_class();
785
+ mOpenCV::cCvSURFParams::init_ruby_class();
786
+
787
+ mOpenCV::cCvMemStorage::init_ruby_class();
788
+
789
+ mOpenCV::cCvSeq::init_ruby_class();
790
+ mOpenCV::mCurve::init_ruby_module();
791
+ mOpenCV::mPointSet::init_ruby_module();
792
+ mOpenCV::cCvChain::init_ruby_class();
793
+ mOpenCV::cCvContour::init_ruby_class();
794
+ mOpenCV::cCvContourTree::init_ruby_class();
795
+
796
+ mOpenCV::cCvMat::init_ruby_class();
797
+ mOpenCV::cIplImage::init_ruby_class();
798
+ mOpenCV::cCvHistogram::init_ruby_class();
799
+ mOpenCV::cCvCapture::init_ruby_class();
800
+ mOpenCV::cCvVideoWriter::init_ruby_class();
801
+
802
+ mOpenCV::cCvLine::init_ruby_class();
803
+ mOpenCV::cCvTwoPoints::init_ruby_class();
804
+ mOpenCV::cCvCircle32f::init_ruby_class();
805
+
806
+ mOpenCV::cCvFeatureTree::init_ruby_class();
807
+
808
+ mOpenCV::cCvConnectedComp::init_ruby_class();
809
+ mOpenCV::cCvAvgComp::init_ruby_class();
810
+ mOpenCV::cCvHaarClassifierCascade::init_ruby_class();
811
+
812
+ mOpenCV::cAlgorithm::init_ruby_class();
813
+ mOpenCV::cFaceRecognizer::init_ruby_class();
814
+ mOpenCV::cEigenFaces::init_ruby_class();
815
+ mOpenCV::cFisherFaces::init_ruby_class();
816
+ mOpenCV::cLBPH::init_ruby_class();
817
+
818
+ mOpenCV::mGUI::init_ruby_module();
819
+ mOpenCV::mGUI::cWindow::init_ruby_class();
820
+ mOpenCV::mGUI::cTrackbar::init_ruby_class();
821
+ mOpenCV::mGUI::cMouseEvent::init_ruby_class();
822
+
823
+ #ifdef HAVE_ML_H
824
+ /* feature support.
825
+ mOpenCV::mMachineLearning::init_ruby_module();
826
+ */
827
+ #endif
828
+
829
+ #ifdef HAVE_OPENCV2_NONFREE_NONFREE_HPP
830
+ cv::initModule_nonfree();
831
+ #endif
832
+ }
833
+ }