jf-ruby-opencv 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) 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 +94 -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 +633 -0
  50. data/ext/opencv/cvcapture.h +82 -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 +384 -0
  58. data/ext/opencv/cvcontour.h +51 -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 +717 -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 +6086 -0
  78. data/ext/opencv/cvmat.h +290 -0
  79. data/ext/opencv/cvmemstorage.cpp +73 -0
  80. data/ext/opencv/cvmemstorage.h +50 -0
  81. data/ext/opencv/cvmoments.cpp +293 -0
  82. data/ext/opencv/cvmoments.h +75 -0
  83. data/ext/opencv/cvpoint.cpp +234 -0
  84. data/ext/opencv/cvpoint.h +64 -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 +338 -0
  90. data/ext/opencv/cvrect.h +79 -0
  91. data/ext/opencv/cvscalar.cpp +241 -0
  92. data/ext/opencv/cvscalar.h +71 -0
  93. data/ext/opencv/cvseq.cpp +663 -0
  94. data/ext/opencv/cvseq.h +75 -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 +246 -0
  104. data/ext/opencv/cvsurfpoint.h +52 -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 +192 -0
  110. data/ext/opencv/cvutils.h +30 -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 +77 -0
  116. data/ext/opencv/facerecognizer.cpp +219 -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 +651 -0
  125. data/ext/opencv/iplimage.h +73 -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 +819 -0
  131. data/ext/opencv/opencv.h +408 -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 +3 -0
  144. data/ruby-opencv.gemspec +44 -0
  145. data/test/eigenfaces_save.xml +7524 -0
  146. data/test/fisherfaces_save.xml +7530 -0
  147. data/test/helper.rb +167 -0
  148. data/test/lbph_save.xml +4304 -0
  149. data/test/runner.rb +30 -0
  150. data/test/samples/airplane.jpg +0 -0
  151. data/test/samples/baboon.jpg +0 -0
  152. data/test/samples/baboon200.jpg +0 -0
  153. data/test/samples/baboon200_rotated.jpg +0 -0
  154. data/test/samples/blank0.jpg +0 -0
  155. data/test/samples/blank1.jpg +0 -0
  156. data/test/samples/blank2.jpg +0 -0
  157. data/test/samples/blank3.jpg +0 -0
  158. data/test/samples/blank4.jpg +0 -0
  159. data/test/samples/blank5.jpg +0 -0
  160. data/test/samples/blank6.jpg +0 -0
  161. data/test/samples/blank7.jpg +0 -0
  162. data/test/samples/blank8.jpg +0 -0
  163. data/test/samples/blank9.jpg +0 -0
  164. data/test/samples/cat.jpg +0 -0
  165. data/test/samples/chessboard.jpg +0 -0
  166. data/test/samples/contours.jpg +0 -0
  167. data/test/samples/fruits.jpg +0 -0
  168. data/test/samples/haarcascade_frontalface_alt.xml.gz +0 -0
  169. data/test/samples/inpaint-mask.bmp +0 -0
  170. data/test/samples/lena-256x256.jpg +0 -0
  171. data/test/samples/lena-32x32.jpg +0 -0
  172. data/test/samples/lena-eyes.jpg +0 -0
  173. data/test/samples/lena-inpaint.jpg +0 -0
  174. data/test/samples/lena.jpg +0 -0
  175. data/test/samples/lines.jpg +0 -0
  176. data/test/samples/messy0.jpg +0 -0
  177. data/test/samples/messy1.jpg +0 -0
  178. data/test/samples/movie_sample.avi +0 -0
  179. data/test/samples/one_way_train_0000.jpg +0 -0
  180. data/test/samples/one_way_train_0001.jpg +0 -0
  181. data/test/samples/partially_blank0.jpg +0 -0
  182. data/test/samples/partially_blank1.jpg +0 -0
  183. data/test/samples/smooth0.jpg +0 -0
  184. data/test/samples/smooth1.jpg +0 -0
  185. data/test/samples/smooth2.jpg +0 -0
  186. data/test/samples/smooth3.jpg +0 -0
  187. data/test/samples/smooth4.jpg +0 -0
  188. data/test/samples/smooth5.jpg +0 -0
  189. data/test/samples/smooth6.jpg +0 -0
  190. data/test/samples/str-cv-rotated.jpg +0 -0
  191. data/test/samples/str-cv.jpg +0 -0
  192. data/test/samples/str-ov.jpg +0 -0
  193. data/test/samples/stuff.jpg +0 -0
  194. data/test/test_curve.rb +43 -0
  195. data/test/test_cvavgcomp.rb +24 -0
  196. data/test/test_cvbox2d.rb +76 -0
  197. data/test/test_cvcapture.rb +191 -0
  198. data/test/test_cvchain.rb +108 -0
  199. data/test/test_cvcircle32f.rb +41 -0
  200. data/test/test_cvconnectedcomp.rb +61 -0
  201. data/test/test_cvcontour.rb +171 -0
  202. data/test/test_cvcontourtree.rb +43 -0
  203. data/test/test_cverror.rb +50 -0
  204. data/test/test_cvfeaturetree.rb +65 -0
  205. data/test/test_cvfont.rb +58 -0
  206. data/test/test_cvhaarclassifiercascade.rb +63 -0
  207. data/test/test_cvhistogram.rb +271 -0
  208. data/test/test_cvhumoments.rb +83 -0
  209. data/test/test_cvline.rb +50 -0
  210. data/test/test_cvmat.rb +3036 -0
  211. data/test/test_cvmat_drawing.rb +349 -0
  212. data/test/test_cvmat_dxt.rb +150 -0
  213. data/test/test_cvmat_imageprocessing.rb +2085 -0
  214. data/test/test_cvmoments.rb +180 -0
  215. data/test/test_cvpoint.rb +75 -0
  216. data/test/test_cvpoint2d32f.rb +75 -0
  217. data/test/test_cvpoint3d32f.rb +93 -0
  218. data/test/test_cvrect.rb +144 -0
  219. data/test/test_cvscalar.rb +113 -0
  220. data/test/test_cvseq.rb +311 -0
  221. data/test/test_cvsize.rb +75 -0
  222. data/test/test_cvsize2d32f.rb +75 -0
  223. data/test/test_cvslice.rb +31 -0
  224. data/test/test_cvsurfparams.rb +57 -0
  225. data/test/test_cvsurfpoint.rb +66 -0
  226. data/test/test_cvtermcriteria.rb +56 -0
  227. data/test/test_cvtwopoints.rb +40 -0
  228. data/test/test_cvvideowriter.rb +58 -0
  229. data/test/test_eigenfaces.rb +93 -0
  230. data/test/test_fisherfaces.rb +93 -0
  231. data/test/test_iplconvkernel.rb +54 -0
  232. data/test/test_iplimage.rb +232 -0
  233. data/test/test_lbph.rb +166 -0
  234. data/test/test_mouseevent.rb +17 -0
  235. data/test/test_opencv.rb +360 -0
  236. data/test/test_pointset.rb +128 -0
  237. data/test/test_preliminary.rb +130 -0
  238. data/test/test_trackbar.rb +47 -0
  239. data/test/test_window.rb +115 -0
  240. data/yard_extension.rb +5 -0
  241. metadata +352 -0
@@ -0,0 +1,73 @@
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_smoothness(int argc, VALUE *argv, VALUE self);
44
+ typedef enum { SMOOTH = 1, BLANK = 2, MESSY = 3 } Smoothness;
45
+ Smoothness compute_smoothness(const IplImage *pFourierImage, const double lowFreqRatio, const double blankDensity, const double messyDensity, const double highFreqRatio, double &outLowDensity, double &outHighDensity);
46
+ void cvShiftDFT(CvArr *src_arr, CvArr *dst_arr );
47
+ IplImage* create_fourier_image(const IplImage *im);
48
+ IplImage* create_frequency_filtered_image(const IplImage *pImage, int low, int high);
49
+ void high_pass_range(const IplImage *pImage, float lostPercentage, int &outLow, int &outHigh);
50
+
51
+ VALUE new_object(int width, int height, int type);
52
+ VALUE new_object(CvSize size, int type);
53
+ __NAMESPACE_END_IPLIMAGE
54
+
55
+ inline IplImage*
56
+ IPLIMAGE(VALUE object)
57
+ {
58
+ IplImage *ptr, stub;
59
+ Data_Get_Struct(object, IplImage, ptr);
60
+ return cvGetImage(ptr, &stub);
61
+ }
62
+
63
+ inline IplImage*
64
+ IPLIMAGE_WITH_CHECK(VALUE object)
65
+ {
66
+ if (!rb_obj_is_kind_of(object, cIplImage::rb_class()))
67
+ raise_typeerror(object, cIplImage::rb_class());
68
+ return IPLIMAGE(object);
69
+ }
70
+
71
+ __NAMESPACE_END_OPENCV
72
+
73
+ #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,819 @@
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
+
265
+ /* Adaptive methods */
266
+ rb_define_const(rb_module, "CV_ADAPTIVE_THRESH_MEAN_C", INT2FIX(CV_ADAPTIVE_THRESH_MEAN_C));
267
+ rb_define_const(rb_module, "CV_ADAPTIVE_THRESH_GAUSSIAN_C", INT2FIX(CV_ADAPTIVE_THRESH_GAUSSIAN_C));
268
+
269
+ /* Border type */
270
+ rb_define_const(rb_module, "IPL_BORDER_CONSTANT", INT2FIX(IPL_BORDER_CONSTANT));
271
+ rb_define_const(rb_module, "IPL_BORDER_REPLICATE", INT2FIX(IPL_BORDER_REPLICATE));
272
+
273
+ /* Retrieval mode */
274
+ rb_define_const(rb_module, "CV_RETR_EXTERNAL", INT2FIX(CV_RETR_EXTERNAL));
275
+ rb_define_const(rb_module, "CV_RETR_LIST", INT2FIX(CV_RETR_LIST));
276
+ rb_define_const(rb_module, "CV_RETR_CCOMP", INT2FIX(CV_RETR_CCOMP));
277
+ rb_define_const(rb_module, "CV_RETR_TREE", INT2FIX(CV_RETR_TREE));
278
+
279
+ /* Approximation method */
280
+ rb_define_const(rb_module, "CV_CHAIN_CODE", INT2FIX(CV_CHAIN_CODE));
281
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_NONE", INT2FIX(CV_CHAIN_APPROX_NONE));
282
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_SIMPLE", INT2FIX(CV_CHAIN_APPROX_SIMPLE));
283
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_TC89_L1", INT2FIX(CV_CHAIN_APPROX_TC89_L1));
284
+ rb_define_const(rb_module, "CV_CHAIN_APPROX_TC89_KCOS", INT2FIX(CV_CHAIN_APPROX_TC89_KCOS));
285
+ rb_define_const(rb_module, "CV_LINK_RUNS", INT2FIX(CV_LINK_RUNS));
286
+
287
+ /* Termination criteria for iterative algorithms */
288
+ rb_define_const(rb_module, "CV_TERMCRIT_ITER", INT2FIX(CV_TERMCRIT_ITER));
289
+ rb_define_const(rb_module, "CV_TERMCRIT_NUMBER", INT2FIX(CV_TERMCRIT_NUMBER));
290
+ rb_define_const(rb_module, "CV_TERMCRIT_EPS", INT2FIX(CV_TERMCRIT_EPS));
291
+
292
+ /* Hough transform method */
293
+ rb_define_const(rb_module, "CV_HOUGH_STANDARD", INT2FIX(CV_HOUGH_STANDARD));
294
+ rb_define_const(rb_module, "CV_HOUGH_PROBABILISTIC", INT2FIX(CV_HOUGH_PROBABILISTIC));
295
+ rb_define_const(rb_module, "CV_HOUGH_MULTI_SCALE", INT2FIX(CV_HOUGH_MULTI_SCALE));
296
+ rb_define_const(rb_module, "CV_HOUGH_GRADIENT", INT2FIX(CV_HOUGH_GRADIENT));
297
+
298
+ /* Inpaint method */
299
+ rb_define_const(rb_module, "CV_INPAINT_NS", INT2FIX(CV_INPAINT_NS));
300
+ rb_define_const(rb_module, "CV_INPAINT_TELEA", INT2FIX(CV_INPAINT_TELEA));
301
+
302
+ /* Match template method */
303
+ rb_define_const(rb_module, "CV_TM_SQDIFF", INT2FIX(CV_TM_SQDIFF));
304
+ rb_define_const(rb_module, "CV_TM_SQDIFF_NORMED", INT2FIX(CV_TM_SQDIFF_NORMED));
305
+ rb_define_const(rb_module, "CV_TM_CCORR", INT2FIX(CV_TM_CCORR));
306
+ rb_define_const(rb_module, "CV_TM_CCORR_NORMED", INT2FIX(CV_TM_CCORR_NORMED));
307
+ rb_define_const(rb_module, "CV_TM_CCOEFF", INT2FIX(CV_TM_CCOEFF));
308
+ rb_define_const(rb_module, "CV_TM_CCOEFF_NORMED", INT2FIX(CV_TM_CCOEFF_NORMED));
309
+
310
+ /* Comparison method */
311
+ rb_define_const(rb_module, "CV_CONTOURS_MATCH_I1", INT2FIX(CV_CONTOURS_MATCH_I1));
312
+ rb_define_const(rb_module, "CV_CONTOURS_MATCH_I2", INT2FIX(CV_CONTOURS_MATCH_I2));
313
+ rb_define_const(rb_module, "CV_CONTOURS_MATCH_I3", INT2FIX(CV_CONTOURS_MATCH_I3));
314
+
315
+ /* Fundamental matrix computing methods */
316
+ rb_define_const(rb_module, "CV_FM_7POINT", INT2FIX(CV_FM_7POINT));
317
+ rb_define_const(rb_module, "CV_FM_8POINT", INT2FIX(CV_FM_8POINT));
318
+ rb_define_const(rb_module, "CV_FM_RANSAC", INT2FIX(CV_FM_RANSAC));
319
+ rb_define_const(rb_module, "CV_FM_LMEDS", INT2FIX(CV_FM_LMEDS));
320
+
321
+ /* Flags of window */
322
+ rb_define_const(rb_module, "CV_WINDOW_AUTOSIZE", INT2FIX(CV_WINDOW_AUTOSIZE));
323
+ rb_define_const(rb_module, "CV_WINDOW_NORMAL", INT2FIX(CV_WINDOW_NORMAL));
324
+ rb_define_const(rb_module, "CV_WINDOW_OPENGL", INT2FIX(CV_WINDOW_OPENGL));
325
+
326
+ /* Object detection mode */
327
+ rb_define_const(rb_module, "CV_HAAR_DO_CANNY_PRUNING", INT2FIX(CV_HAAR_DO_CANNY_PRUNING));
328
+
329
+ /* Interpolation methods */
330
+ rb_define_const(rb_module, "CV_INTER_NN", INT2FIX(CV_INTER_NN));
331
+ rb_define_const(rb_module, "CV_INTER_LINEAR", INT2FIX(CV_INTER_LINEAR));
332
+ rb_define_const(rb_module, "CV_INTER_AREA", INT2FIX(CV_INTER_AREA));
333
+ rb_define_const(rb_module, "CV_INTER_CUBIC", INT2FIX(CV_INTER_CUBIC));
334
+ rb_define_const(rb_module, "CV_INTER_LANCZOS4", INT2FIX(CV_INTER_LANCZOS4));
335
+
336
+ /* Warp affine optional flags */
337
+ rb_define_const(rb_module, "CV_WARP_FILL_OUTLIERS", INT2FIX(CV_WARP_FILL_OUTLIERS));
338
+ rb_define_const(rb_module, "CV_WARP_INVERSE_MAP", INT2FIX(CV_WARP_INVERSE_MAP));
339
+
340
+ /* SVD optional flags */
341
+ rb_define_const(rb_module, "CV_SVD_MODIFY_A", INT2FIX(CV_SVD_MODIFY_A));
342
+ rb_define_const(rb_module, "CV_SVD_U_T", INT2FIX(CV_SVD_U_T));
343
+ rb_define_const(rb_module, "CV_SVD_V_T", INT2FIX(CV_SVD_V_T));
344
+
345
+ /* Norm types */
346
+ rb_define_const(rb_module, "CV_NORM_INF", INT2FIX(cv::NORM_INF));
347
+ rb_define_const(rb_module, "CV_NORM_L1", INT2FIX(cv::NORM_L1));
348
+ rb_define_const(rb_module, "CV_NORM_L2", INT2FIX(cv::NORM_L2));
349
+ rb_define_const(rb_module, "CV_NORM_MINMAX", INT2FIX(cv::NORM_MINMAX));
350
+
351
+ /* Histogram representation format */
352
+ rb_define_const(rb_module, "CV_HIST_ARRAY", INT2FIX(CV_HIST_ARRAY));
353
+ rb_define_const(rb_module, "CV_HIST_SPARSE", INT2FIX(CV_HIST_SPARSE));
354
+ rb_define_const(rb_module, "CV_HIST_TREE", INT2FIX(CV_HIST_TREE));
355
+ rb_define_const(rb_module, "CV_HIST_UNIFORM", INT2FIX(CV_HIST_UNIFORM));
356
+
357
+ /* Histogram comparison method */
358
+ rb_define_const(rb_module, "CV_COMP_CORREL", INT2FIX(CV_COMP_CORREL));
359
+ rb_define_const(rb_module, "CV_COMP_CHISQR", INT2FIX(CV_COMP_CHISQR));
360
+ rb_define_const(rb_module, "CV_COMP_INTERSECT", INT2FIX(CV_COMP_INTERSECT));
361
+ rb_define_const(rb_module, "CV_COMP_BHATTACHARYYA", INT2FIX(CV_COMP_BHATTACHARYYA));
362
+
363
+ /* DFT and DCT flags */
364
+ rb_define_const(rb_module, "CV_DXT_FORWARD", INT2FIX(CV_DXT_FORWARD));
365
+ rb_define_const(rb_module, "CV_DXT_INVERSE", INT2FIX(CV_DXT_INVERSE));
366
+ rb_define_const(rb_module, "CV_DXT_SCALE", INT2FIX(CV_DXT_SCALE));
367
+ rb_define_const(rb_module, "CV_DXT_INV_SCALE", INT2FIX(CV_DXT_INV_SCALE));
368
+ rb_define_const(rb_module, "CV_DXT_INVERSE_SCALE", INT2FIX(CV_DXT_INVERSE_SCALE));
369
+ rb_define_const(rb_module, "CV_DXT_ROWS", INT2FIX(CV_DXT_ROWS));
370
+
371
+ /* FindChessboardCorners flags */
372
+ rb_define_const(rb_module, "CV_CALIB_CB_ADAPTIVE_THRESH", INT2FIX(CV_CALIB_CB_ADAPTIVE_THRESH));
373
+ rb_define_const(rb_module, "CV_CALIB_CB_NORMALIZE_IMAGE", INT2FIX(CV_CALIB_CB_NORMALIZE_IMAGE));
374
+ rb_define_const(rb_module, "CV_CALIB_CB_FILTER_QUADS", INT2FIX(CV_CALIB_CB_FILTER_QUADS));
375
+ rb_define_const(rb_module, "CV_CALIB_CB_FAST_CHECK", INT2FIX(CV_CALIB_CB_FAST_CHECK));
376
+
377
+ /* Color map for cv::applyColorMap */
378
+ rb_define_const(rb_module, "COLORMAP_AUTUMN", INT2FIX(cv::COLORMAP_AUTUMN));
379
+ rb_define_const(rb_module, "COLORMAP_BONE", INT2FIX(cv::COLORMAP_BONE));
380
+ rb_define_const(rb_module, "COLORMAP_JET", INT2FIX(cv::COLORMAP_JET));
381
+ rb_define_const(rb_module, "COLORMAP_WINTER", INT2FIX(cv::COLORMAP_WINTER));
382
+ rb_define_const(rb_module, "COLORMAP_RAINBOW", INT2FIX(cv::COLORMAP_RAINBOW));
383
+ rb_define_const(rb_module, "COLORMAP_OCEAN", INT2FIX(cv::COLORMAP_OCEAN));
384
+ rb_define_const(rb_module, "COLORMAP_SUMMER", INT2FIX(cv::COLORMAP_SUMMER));
385
+ rb_define_const(rb_module, "COLORMAP_SPRING", INT2FIX(cv::COLORMAP_SPRING));
386
+ rb_define_const(rb_module, "COLORMAP_COOL", INT2FIX(cv::COLORMAP_COOL));
387
+ rb_define_const(rb_module, "COLORMAP_HSV", INT2FIX(cv::COLORMAP_HSV));
388
+ rb_define_const(rb_module, "COLORMAP_PINK", INT2FIX(cv::COLORMAP_PINK));
389
+ rb_define_const(rb_module, "COLORMAP_HOT", INT2FIX(cv::COLORMAP_HOT));
390
+
391
+ /* Sequence types */
392
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_BITS", INT2FIX(CV_SEQ_ELTYPE_BITS));
393
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_MASK", INT2FIX(CV_SEQ_ELTYPE_MASK));
394
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_POINT", INT2FIX(CV_SEQ_ELTYPE_POINT));
395
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_CODE", INT2FIX(CV_SEQ_ELTYPE_CODE));
396
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_GENERIC", INT2FIX(CV_SEQ_ELTYPE_GENERIC));
397
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_PTR", INT2FIX(CV_SEQ_ELTYPE_PTR));
398
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_PPOINT", INT2FIX(CV_SEQ_ELTYPE_PPOINT));
399
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_INDEX", INT2FIX(CV_SEQ_ELTYPE_INDEX));
400
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_GRAPH_EDGE", INT2FIX(CV_SEQ_ELTYPE_GRAPH_EDGE));
401
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_GRAPH_VERTEX", INT2FIX(CV_SEQ_ELTYPE_GRAPH_VERTEX));
402
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_TRIAN_ATR", INT2FIX(CV_SEQ_ELTYPE_TRIAN_ATR));
403
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_CONNECTED_COMP", INT2FIX(CV_SEQ_ELTYPE_CONNECTED_COMP));
404
+ rb_define_const(rb_module, "CV_SEQ_ELTYPE_POINT3D", INT2FIX(CV_SEQ_ELTYPE_POINT3D));
405
+ rb_define_const(rb_module, "CV_SEQ_KIND_BITS", INT2FIX(CV_SEQ_KIND_BITS));
406
+ rb_define_const(rb_module, "CV_SEQ_KIND_MASK", INT2FIX(CV_SEQ_KIND_MASK));
407
+ rb_define_const(rb_module, "CV_SEQ_KIND_GENERIC", INT2FIX(CV_SEQ_KIND_GENERIC));
408
+ rb_define_const(rb_module, "CV_SEQ_KIND_CURVE", INT2FIX(CV_SEQ_KIND_CURVE));
409
+ rb_define_const(rb_module, "CV_SEQ_KIND_BIN_TREE", INT2FIX(CV_SEQ_KIND_BIN_TREE));
410
+ rb_define_const(rb_module, "CV_SEQ_KIND_GRAPH", INT2FIX(CV_SEQ_KIND_GRAPH));
411
+ rb_define_const(rb_module, "CV_SEQ_KIND_SUBDIV2D", INT2FIX(CV_SEQ_KIND_SUBDIV2D));
412
+ rb_define_const(rb_module, "CV_SEQ_FLAG_SHIFT", INT2FIX(CV_SEQ_FLAG_SHIFT));
413
+ rb_define_const(rb_module, "CV_SEQ_FLAG_CLOSED", INT2FIX(CV_SEQ_FLAG_CLOSED));
414
+ rb_define_const(rb_module, "CV_SEQ_FLAG_SIMPLE", INT2FIX(CV_SEQ_FLAG_SIMPLE));
415
+ rb_define_const(rb_module, "CV_SEQ_FLAG_CONVEX", INT2FIX(CV_SEQ_FLAG_CONVEX));
416
+ rb_define_const(rb_module, "CV_SEQ_FLAG_HOLE", INT2FIX(CV_SEQ_FLAG_HOLE));
417
+ rb_define_const(rb_module, "CV_GRAPH_FLAG_ORIENTED", INT2FIX(CV_GRAPH_FLAG_ORIENTED));
418
+ rb_define_const(rb_module, "CV_GRAPH", INT2FIX(CV_GRAPH));
419
+ rb_define_const(rb_module, "CV_ORIENTED_GRAPH", INT2FIX(CV_ORIENTED_GRAPH));
420
+ rb_define_const(rb_module, "CV_SEQ_POINT_SET", INT2FIX(CV_SEQ_POINT_SET));
421
+ rb_define_const(rb_module, "CV_SEQ_POINT3D_SET", INT2FIX(CV_SEQ_POINT3D_SET));
422
+ rb_define_const(rb_module, "CV_SEQ_POLYLINE", INT2FIX(CV_SEQ_POLYLINE));
423
+ rb_define_const(rb_module, "CV_SEQ_POLYGON", INT2FIX(CV_SEQ_POLYGON));
424
+ rb_define_const(rb_module, "CV_SEQ_CONTOUR", INT2FIX(CV_SEQ_CONTOUR));
425
+ rb_define_const(rb_module, "CV_SEQ_SIMPLE_POLYGON", INT2FIX(CV_SEQ_SIMPLE_POLYGON));
426
+ rb_define_const(rb_module, "CV_SEQ_CHAIN", INT2FIX(CV_SEQ_CHAIN));
427
+ rb_define_const(rb_module, "CV_SEQ_CHAIN_CONTOUR", INT2FIX(CV_SEQ_CHAIN_CONTOUR));
428
+ rb_define_const(rb_module, "CV_SEQ_POLYGON_TREE", INT2FIX(CV_SEQ_POLYGON_TREE));
429
+ rb_define_const(rb_module, "CV_SEQ_CONNECTED_COMP", INT2FIX(CV_SEQ_CONNECTED_COMP));
430
+ rb_define_const(rb_module, "CV_SEQ_INDEX", INT2FIX(CV_SEQ_INDEX));
431
+
432
+ VALUE inversion_method = rb_hash_new();
433
+ /* {:lu, :svd, :svd_sym(:svd_symmetric)}: Inversion method */
434
+ rb_define_const(rb_module, "INVERSION_METHOD", inversion_method);
435
+ REGISTER_HASH(inversion_method, "lu", CV_LU);
436
+ REGISTER_HASH(inversion_method, "svd", CV_SVD);
437
+ REGISTER_HASH(inversion_method, "svd_sym", CV_SVD_SYM);
438
+ REGISTER_HASH(inversion_method, "svd_symmetric", CV_SVD_SYM);
439
+
440
+ VALUE homography_calc_method = rb_hash_new();
441
+ /* {:all, :ransac, :lmeds}: Methods used to computed homography matrix */
442
+ rb_define_const(rb_module, "HOMOGRAPHY_CALC_METHOD", homography_calc_method);
443
+ REGISTER_HASH(homography_calc_method, "all", 0);
444
+ REGISTER_HASH(homography_calc_method, "ransac", CV_RANSAC);
445
+ REGISTER_HASH(homography_calc_method, "lmeds", CV_LMEDS);
446
+
447
+ VALUE depth = rb_hash_new();
448
+ /* {:cv8u, :cv8s, :cv16u, :cv16s, :cv32s, :cv32f, :cv64f}: Depth of each pixel. */
449
+ rb_define_const(rb_module, "DEPTH", depth);
450
+ REGISTER_HASH(depth, "cv8u", CV_8U);
451
+ REGISTER_HASH(depth, "cv8s", CV_8S);
452
+ REGISTER_HASH(depth, "cv16u", CV_16U);
453
+ REGISTER_HASH(depth, "cv16s", CV_16S);
454
+ REGISTER_HASH(depth, "cv32s", CV_32S);
455
+ REGISTER_HASH(depth, "cv32f", CV_32F);
456
+ REGISTER_HASH(depth, "cv64f", CV_64F);
457
+
458
+ VALUE connectivity = rb_hash_new();
459
+ /* {:aa(:anti_alias)}: Determined by the closeness of pixel values */
460
+ rb_define_const(rb_module, "CONNECTIVITY", connectivity);
461
+ REGISTER_HASH(connectivity, "aa", CV_AA);
462
+ REGISTER_HASH(connectivity, "anti_alias", CV_AA);
463
+
464
+ VALUE structuring_element_shape = rb_hash_new();
465
+ /* {:rect, :cross, :ellipse, :custom}: Shape of the structuring elements */
466
+ rb_define_const(rb_module, "STRUCTURING_ELEMENT_SHAPE", structuring_element_shape);
467
+ REGISTER_HASH(structuring_element_shape, "rect", CV_SHAPE_RECT);
468
+ REGISTER_HASH(structuring_element_shape, "cross", CV_SHAPE_CROSS);
469
+ REGISTER_HASH(structuring_element_shape, "ellipse", CV_SHAPE_ELLIPSE);
470
+ REGISTER_HASH(structuring_element_shape, "custom", CV_SHAPE_CUSTOM);
471
+
472
+ VALUE retrieval_mode = rb_hash_new();
473
+ /* {:external, :list, :ccomp, :tree}: Retrieval mode */
474
+ rb_define_const(rb_module, "RETRIEVAL_MODE", retrieval_mode);
475
+ REGISTER_HASH(retrieval_mode, "external", CV_RETR_EXTERNAL);
476
+ REGISTER_HASH(retrieval_mode, "list", CV_RETR_LIST);
477
+ REGISTER_HASH(retrieval_mode, "ccomp", CV_RETR_CCOMP);
478
+ REGISTER_HASH(retrieval_mode, "tree", CV_RETR_TREE);
479
+
480
+ VALUE approx_chain_method = rb_hash_new();
481
+ /* {:code, :approx_none, :approx_simple, :apporx_tc89_11, :approx_tc89_kcos}: Approximation method */
482
+ rb_define_const(rb_module, "APPROX_CHAIN_METHOD", approx_chain_method);
483
+ REGISTER_HASH(approx_chain_method, "code", CV_CHAIN_CODE);
484
+ REGISTER_HASH(approx_chain_method, "approx_none", CV_CHAIN_APPROX_NONE);
485
+ REGISTER_HASH(approx_chain_method, "approx_simple", CV_CHAIN_APPROX_SIMPLE);
486
+ REGISTER_HASH(approx_chain_method, "approx_tc89_l1", CV_CHAIN_APPROX_TC89_L1);
487
+ REGISTER_HASH(approx_chain_method, "approx_tc89_kcos", CV_CHAIN_APPROX_TC89_KCOS);
488
+
489
+ VALUE approx_poly_method = rb_hash_new();
490
+ /* {:dp}: Approximation method (polygon) */
491
+ rb_define_const(rb_module, "APPROX_POLY_METHOD", approx_poly_method);
492
+ REGISTER_HASH(approx_poly_method, "dp", CV_POLY_APPROX_DP);
493
+
494
+ VALUE match_template_method = rb_hash_new();
495
+ /* {:sqdiff, :sqdiff_normed, :ccorr, :ccorr_normed, :ccoeff, :ccoeff_normed}: Match template method */
496
+ rb_define_const(rb_module, "MATCH_TEMPLATE_METHOD", match_template_method);
497
+ REGISTER_HASH(match_template_method, "sqdiff", CV_TM_SQDIFF);
498
+ REGISTER_HASH(match_template_method, "sqdiff_normed", CV_TM_SQDIFF_NORMED);
499
+ REGISTER_HASH(match_template_method, "ccorr", CV_TM_CCORR);
500
+ REGISTER_HASH(match_template_method, "ccorr_normed", CV_TM_CCORR_NORMED);
501
+ REGISTER_HASH(match_template_method, "ccoeff", CV_TM_CCOEFF);
502
+ REGISTER_HASH(match_template_method, "ccoeff_normed", CV_TM_CCOEFF_NORMED);
503
+
504
+ VALUE morphological_operation = rb_hash_new();
505
+ /* {:open, :close, :gradient, :tophat, :blackhat}: Types of morphological operations */
506
+ rb_define_const(rb_module, "MORPHOLOGICAL_OPERATION", morphological_operation);
507
+ REGISTER_HASH(morphological_operation, "open", CV_MOP_OPEN);
508
+ REGISTER_HASH(morphological_operation, "close", CV_MOP_CLOSE);
509
+ REGISTER_HASH(morphological_operation, "gradient", CV_MOP_GRADIENT);
510
+ REGISTER_HASH(morphological_operation, "tophat", CV_MOP_TOPHAT);
511
+ REGISTER_HASH(morphological_operation, "blackhat", CV_MOP_BLACKHAT);
512
+
513
+ VALUE smoothing_type = rb_hash_new();
514
+ /* {:blur_no_scale, :blur, :gaussian, :median, :bilateral}: Types of smoothing */
515
+ rb_define_const(rb_module, "SMOOTHING_TYPE", smoothing_type);
516
+ REGISTER_HASH(smoothing_type, "blur_no_scale", CV_BLUR_NO_SCALE);
517
+ REGISTER_HASH(smoothing_type, "blur", CV_BLUR);
518
+ REGISTER_HASH(smoothing_type, "gaussian", CV_GAUSSIAN);
519
+ REGISTER_HASH(smoothing_type, "median", CV_MEDIAN);
520
+ REGISTER_HASH(smoothing_type, "bilateral", CV_BILATERAL);
521
+
522
+ VALUE adaptive_method = rb_hash_new();
523
+ /* {:mean_c, :gaussian_c}: Adaptive thresholding algorithm */
524
+ rb_define_const(rb_module, "ADAPTIVE_METHOD", adaptive_method);
525
+ REGISTER_HASH(adaptive_method, "mean_c", CV_ADAPTIVE_THRESH_MEAN_C);
526
+ REGISTER_HASH(adaptive_method, "gaussian_c", CV_ADAPTIVE_THRESH_GAUSSIAN_C);
527
+
528
+ VALUE threshold_type = rb_hash_new();
529
+ /* {:binary, :binary_inv, :trunc, :tozero, :tozero_inv, :otsu} : Thresholding types */
530
+ rb_define_const(rb_module, "THRESHOLD_TYPE", threshold_type);
531
+ REGISTER_HASH(threshold_type, "binary", CV_THRESH_BINARY);
532
+ REGISTER_HASH(threshold_type, "binary_inv", CV_THRESH_BINARY_INV);
533
+ REGISTER_HASH(threshold_type, "trunc", CV_THRESH_TRUNC);
534
+ REGISTER_HASH(threshold_type, "tozero", CV_THRESH_TOZERO);
535
+ REGISTER_HASH(threshold_type, "tozero_inv", CV_THRESH_TOZERO_INV);
536
+ REGISTER_HASH(threshold_type, "otsu", CV_THRESH_OTSU);
537
+
538
+ VALUE hough_transform_method = rb_hash_new();
539
+ /* {:standard, :probabilistic, :multi_scale} : Hough transform method */
540
+ rb_define_const(rb_module, "HOUGH_TRANSFORM_METHOD", hough_transform_method);
541
+ REGISTER_HASH(hough_transform_method, "standard", CV_HOUGH_STANDARD);
542
+ REGISTER_HASH(hough_transform_method, "probabilistic", CV_HOUGH_PROBABILISTIC);
543
+ REGISTER_HASH(hough_transform_method, "multi_scale", CV_HOUGH_MULTI_SCALE);
544
+ REGISTER_HASH(hough_transform_method, "gradient", CV_HOUGH_GRADIENT);
545
+
546
+ VALUE inpaint_method = rb_hash_new();
547
+ /* {:ns, :telea} : Inpaint method */
548
+ rb_define_const(rb_module, "INPAINT_METHOD", inpaint_method);
549
+ REGISTER_HASH(inpaint_method, "ns", CV_INPAINT_NS);
550
+ REGISTER_HASH(inpaint_method, "telea", CV_INPAINT_TELEA);
551
+
552
+ VALUE comparison_method = rb_hash_new();
553
+ /* Comparison method */
554
+ rb_define_const(rb_module, "COMPARISON_METHOD", comparison_method);
555
+ REGISTER_HASH(comparison_method, "i1", CV_CONTOURS_MATCH_I1);
556
+ REGISTER_HASH(comparison_method, "i2", CV_CONTOURS_MATCH_I2);
557
+ REGISTER_HASH(comparison_method, "i3", CV_CONTOURS_MATCH_I3);
558
+
559
+ /* color convert methods */
560
+ rb_define_module_function(rb_module, "BGR2BGRA", RUBY_METHOD_FUNC(rb_BGR2BGRA), 1);
561
+ rb_define_module_function(rb_module, "RGB2RGBA", RUBY_METHOD_FUNC(rb_RGB2RGBA), 1);
562
+ rb_define_module_function(rb_module, "BGRA2BGR", RUBY_METHOD_FUNC(rb_BGRA2BGR), 1);
563
+ rb_define_module_function(rb_module, "RGBA2RGB", RUBY_METHOD_FUNC(rb_RGBA2RGB), 1);
564
+ rb_define_module_function(rb_module, "BGR2RGBA", RUBY_METHOD_FUNC(rb_BGR2RGBA), 1);
565
+ rb_define_module_function(rb_module, "RGB2BGRA", RUBY_METHOD_FUNC(rb_RGB2BGRA), 1);
566
+ rb_define_module_function(rb_module, "RGBA2BGR", RUBY_METHOD_FUNC(rb_RGBA2BGR), 1);
567
+ rb_define_module_function(rb_module, "BGRA2RGB", RUBY_METHOD_FUNC(rb_BGRA2RGB), 1);
568
+ rb_define_module_function(rb_module, "BGR2RGB", RUBY_METHOD_FUNC(rb_BGR2RGB), 1);
569
+ rb_define_module_function(rb_module, "RGB2BGR", RUBY_METHOD_FUNC(rb_RGB2BGR), 1);
570
+ rb_define_module_function(rb_module, "BGRA2RGBA", RUBY_METHOD_FUNC(rb_BGRA2RGBA), 1);
571
+ rb_define_module_function(rb_module, "RGBA2BGRA", RUBY_METHOD_FUNC(rb_RGBA2BGRA), 1);
572
+ rb_define_module_function(rb_module, "BGR2GRAY", RUBY_METHOD_FUNC(rb_BGR2GRAY), 1);
573
+ rb_define_module_function(rb_module, "RGB2GRAY", RUBY_METHOD_FUNC(rb_RGB2GRAY), 1);
574
+ rb_define_module_function(rb_module, "GRAY2BGR", RUBY_METHOD_FUNC(rb_GRAY2BGR), 1);
575
+ rb_define_module_function(rb_module, "GRAY2RGB", RUBY_METHOD_FUNC(rb_GRAY2RGB), 1);
576
+ rb_define_module_function(rb_module, "GRAY2BGRA", RUBY_METHOD_FUNC(rb_GRAY2BGRA), 1);
577
+ rb_define_module_function(rb_module, "GRAY2RGBA", RUBY_METHOD_FUNC(rb_GRAY2RGBA), 1);
578
+ rb_define_module_function(rb_module, "BGRA2GRAY", RUBY_METHOD_FUNC(rb_BGRA2GRAY), 1);
579
+ rb_define_module_function(rb_module, "RGBA2GRAY", RUBY_METHOD_FUNC(rb_RGBA2GRAY), 1);
580
+ rb_define_module_function(rb_module, "BGR2BGR565", RUBY_METHOD_FUNC(rb_BGR2BGR565), 1);
581
+ rb_define_module_function(rb_module, "RGB2BGR565", RUBY_METHOD_FUNC(rb_RGB2BGR565), 1);
582
+ rb_define_module_function(rb_module, "BGR5652BGR", RUBY_METHOD_FUNC(rb_BGR5652BGR), 1);
583
+ rb_define_module_function(rb_module, "BGR5652RGB", RUBY_METHOD_FUNC(rb_BGR5652RGB), 1);
584
+ rb_define_module_function(rb_module, "BGRA2BGR565", RUBY_METHOD_FUNC(rb_BGRA2BGR565), 1);
585
+ rb_define_module_function(rb_module, "RGBA2BGR565", RUBY_METHOD_FUNC(rb_RGBA2BGR565), 1);
586
+ rb_define_module_function(rb_module, "BGR5652BGRA", RUBY_METHOD_FUNC(rb_BGR5652BGRA), 1);
587
+ rb_define_module_function(rb_module, "BGR5652RGBA", RUBY_METHOD_FUNC(rb_BGR5652RGBA), 1);
588
+ rb_define_module_function(rb_module, "GRAY2BGR565", RUBY_METHOD_FUNC(rb_GRAY2BGR565), 1);
589
+ rb_define_module_function(rb_module, "BGR5652GRAY", RUBY_METHOD_FUNC(rb_BGR5652GRAY), 1);
590
+ rb_define_module_function(rb_module, "BGR2BGR555", RUBY_METHOD_FUNC(rb_BGR2BGR555), 1);
591
+ rb_define_module_function(rb_module, "RGB2BGR555", RUBY_METHOD_FUNC(rb_RGB2BGR555), 1);
592
+ rb_define_module_function(rb_module, "BGR5552BGR", RUBY_METHOD_FUNC(rb_BGR5552BGR), 1);
593
+ rb_define_module_function(rb_module, "BGR5552RGB", RUBY_METHOD_FUNC(rb_BGR5552RGB), 1);
594
+ rb_define_module_function(rb_module, "BGRA2BGR555", RUBY_METHOD_FUNC(rb_BGRA2BGR555), 1);
595
+ rb_define_module_function(rb_module, "RGBA2BGR555", RUBY_METHOD_FUNC(rb_RGBA2BGR555), 1);
596
+ rb_define_module_function(rb_module, "BGR5552BGRA", RUBY_METHOD_FUNC(rb_BGR5552BGRA), 1);
597
+ rb_define_module_function(rb_module, "BGR5552RGBA", RUBY_METHOD_FUNC(rb_BGR5552RGBA), 1);
598
+ rb_define_module_function(rb_module, "GRAY2BGR555", RUBY_METHOD_FUNC(rb_GRAY2BGR555), 1);
599
+ rb_define_module_function(rb_module, "BGR5552GRAY", RUBY_METHOD_FUNC(rb_BGR5552GRAY), 1);
600
+ rb_define_module_function(rb_module, "BGR2XYZ", RUBY_METHOD_FUNC(rb_BGR2XYZ), 1);
601
+ rb_define_module_function(rb_module, "RGB2XYZ", RUBY_METHOD_FUNC(rb_RGB2XYZ), 1);
602
+ rb_define_module_function(rb_module, "XYZ2BGR", RUBY_METHOD_FUNC(rb_XYZ2BGR), 1);
603
+ rb_define_module_function(rb_module, "XYZ2RGB", RUBY_METHOD_FUNC(rb_XYZ2RGB), 1);
604
+ rb_define_module_function(rb_module, "BGR2YCrCb", RUBY_METHOD_FUNC(rb_BGR2YCrCb), 1);
605
+ rb_define_module_function(rb_module, "RGB2YCrCb", RUBY_METHOD_FUNC(rb_RGB2YCrCb), 1);
606
+ rb_define_module_function(rb_module, "YCrCb2BGR", RUBY_METHOD_FUNC(rb_YCrCb2BGR), 1);
607
+ rb_define_module_function(rb_module, "YCrCb2RGB", RUBY_METHOD_FUNC(rb_YCrCb2RGB), 1);
608
+ rb_define_module_function(rb_module, "BGR2HSV", RUBY_METHOD_FUNC(rb_BGR2HSV), 1);
609
+ rb_define_module_function(rb_module, "RGB2HSV", RUBY_METHOD_FUNC(rb_RGB2HSV), 1);
610
+ rb_define_module_function(rb_module, "BGR2Lab", RUBY_METHOD_FUNC(rb_BGR2Lab), 1);
611
+ rb_define_module_function(rb_module, "RGB2Lab", RUBY_METHOD_FUNC(rb_RGB2Lab), 1);
612
+ rb_define_module_function(rb_module, "BayerBG2BGR", RUBY_METHOD_FUNC(rb_BayerBG2BGR), 1);
613
+ rb_define_module_function(rb_module, "BayerGB2BGR", RUBY_METHOD_FUNC(rb_BayerGB2BGR), 1);
614
+ rb_define_module_function(rb_module, "BayerRG2BGR", RUBY_METHOD_FUNC(rb_BayerRG2BGR), 1);
615
+ rb_define_module_function(rb_module, "BayerGR2BGR", RUBY_METHOD_FUNC(rb_BayerGR2BGR), 1);
616
+ rb_define_module_function(rb_module, "BayerBG2RGB", RUBY_METHOD_FUNC(rb_BayerBG2RGB), 1);
617
+ rb_define_module_function(rb_module, "BayerGB2RGB", RUBY_METHOD_FUNC(rb_BayerGB2RGB), 1);
618
+ rb_define_module_function(rb_module, "BayerRG2RGB", RUBY_METHOD_FUNC(rb_BayerRG2RGB), 1);
619
+ rb_define_module_function(rb_module, "BayerGR2RGB", RUBY_METHOD_FUNC(rb_BayerGR2RGB), 1);
620
+ rb_define_module_function(rb_module, "BGR2Luv", RUBY_METHOD_FUNC(rb_BGR2Luv), 1);
621
+ rb_define_module_function(rb_module, "RGB2Luv", RUBY_METHOD_FUNC(rb_RGB2Luv), 1);
622
+ rb_define_module_function(rb_module, "BGR2HLS", RUBY_METHOD_FUNC(rb_BGR2HLS), 1);
623
+ rb_define_module_function(rb_module, "RGB2HLS", RUBY_METHOD_FUNC(rb_RGB2HLS), 1);
624
+ rb_define_module_function(rb_module, "HSV2BGR", RUBY_METHOD_FUNC(rb_HSV2BGR), 1);
625
+ rb_define_module_function(rb_module, "HSV2RGB", RUBY_METHOD_FUNC(rb_HSV2RGB), 1);
626
+ rb_define_module_function(rb_module, "Lab2BGR", RUBY_METHOD_FUNC(rb_Lab2BGR), 1);
627
+ rb_define_module_function(rb_module, "Lab2RGB", RUBY_METHOD_FUNC(rb_Lab2RGB), 1);
628
+ rb_define_module_function(rb_module, "Luv2BGR", RUBY_METHOD_FUNC(rb_Luv2BGR), 1);
629
+ rb_define_module_function(rb_module, "Luv2RGB", RUBY_METHOD_FUNC(rb_Luv2RGB), 1);
630
+ rb_define_module_function(rb_module, "HLS2BGR", RUBY_METHOD_FUNC(rb_HLS2BGR), 1);
631
+ rb_define_module_function(rb_module, "HLS2RGB", RUBY_METHOD_FUNC(rb_HLS2RGB), 1);
632
+
633
+ rb_define_module_function(rb_module, "build_information", RUBY_METHOD_FUNC(rb_build_information), 0);
634
+ }
635
+
636
+ #define CREATE_CVTCOLOR_FUNC(rb_func_name, c_const_name, src_cn, dest_cn) \
637
+ VALUE rb_func_name(VALUE klass, VALUE image) \
638
+ { \
639
+ VALUE dest = Qnil; \
640
+ CvArr* img_ptr = CVARR(image); \
641
+ try { \
642
+ int type = cvGetElemType(img_ptr); \
643
+ if (CV_MAT_CN(type) != src_cn) \
644
+ rb_raise(rb_eArgError, "argument 1 should be %d-channel.", src_cn); \
645
+ dest = cCvMat::new_mat_kind_object(cvGetSize(img_ptr), image, CV_MAT_DEPTH(type), dest_cn); \
646
+ cvCvtColor(img_ptr, CVARR(dest), c_const_name); \
647
+ } \
648
+ catch (cv::Exception& e) { \
649
+ raise_cverror(e); \
650
+ } \
651
+ return dest; \
652
+ }
653
+
654
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGRA, CV_BGR2BGRA, 3, 4);
655
+ CREATE_CVTCOLOR_FUNC(rb_RGB2RGBA, CV_RGB2RGBA, 3, 4);
656
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR, CV_BGRA2BGR, 4, 3);
657
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2RGB, CV_RGBA2RGB, 4, 3);
658
+ CREATE_CVTCOLOR_FUNC(rb_BGR2RGBA, CV_BGR2RGBA, 3, 4);
659
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGRA, CV_RGB2BGRA, 3, 4);
660
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR, CV_RGBA2BGR, 4, 3);
661
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2RGB, CV_BGRA2RGB, 4, 3);
662
+ CREATE_CVTCOLOR_FUNC(rb_BGR2RGB, CV_BGR2RGB, 3, 3);
663
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR, CV_RGB2BGR, 3, 3);
664
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2RGBA, CV_BGRA2RGBA, 4, 4);
665
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGRA, CV_RGBA2BGRA, 4, 4);
666
+ CREATE_CVTCOLOR_FUNC(rb_BGR2GRAY, CV_BGR2GRAY, 3, 1);
667
+ CREATE_CVTCOLOR_FUNC(rb_RGB2GRAY, CV_RGB2GRAY, 3, 1);
668
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR, CV_GRAY2BGR, 1, 3);
669
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2RGB, CV_GRAY2RGB, 1, 3);
670
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGRA, CV_GRAY2BGRA, 1, 4);
671
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2RGBA, CV_GRAY2RGBA, 1, 4);
672
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2GRAY, CV_BGRA2GRAY, 4, 1);
673
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2GRAY, CV_RGBA2GRAY, 4, 1);
674
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGR565, CV_BGR2BGR565, 3, 3);
675
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR565, CV_RGB2BGR565, 3, 3);
676
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652BGR, CV_BGR5652BGR, 3, 3);
677
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652RGB, CV_BGR5652RGB, 3, 3);
678
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR565, CV_BGRA2BGR565, 4, 3);
679
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR565, CV_RGBA2BGR565, 4, 3);
680
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652BGRA, CV_BGR5652BGRA, 3, 4);
681
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652RGBA, CV_BGR5652RGBA, 3, 4);
682
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR565, CV_GRAY2BGR565, 1, 3);
683
+ CREATE_CVTCOLOR_FUNC(rb_BGR5652GRAY, CV_BGR5652GRAY, 3, 1);
684
+ CREATE_CVTCOLOR_FUNC(rb_BGR2BGR555, CV_BGR2BGR555, 3, 3);
685
+ CREATE_CVTCOLOR_FUNC(rb_RGB2BGR555, CV_RGB2BGR555, 3, 3);
686
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552BGR, CV_BGR5552BGR, 3, 3);
687
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552RGB, CV_BGR5552RGB, 3, 3);
688
+ CREATE_CVTCOLOR_FUNC(rb_BGRA2BGR555, CV_BGRA2BGR555, 4, 3);
689
+ CREATE_CVTCOLOR_FUNC(rb_RGBA2BGR555, CV_RGBA2BGR555, 4, 3);
690
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552BGRA, CV_BGR5552BGRA, 3, 4);
691
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552RGBA, CV_BGR5552RGBA, 3, 4);
692
+ CREATE_CVTCOLOR_FUNC(rb_GRAY2BGR555, CV_GRAY2BGR555, 1, 3);
693
+ CREATE_CVTCOLOR_FUNC(rb_BGR5552GRAY, CV_BGR5552GRAY, 3, 1);
694
+ CREATE_CVTCOLOR_FUNC(rb_BGR2XYZ, CV_BGR2XYZ, 3, 3);
695
+ CREATE_CVTCOLOR_FUNC(rb_RGB2XYZ, CV_RGB2XYZ, 3, 3);
696
+ CREATE_CVTCOLOR_FUNC(rb_XYZ2BGR, CV_XYZ2BGR, 3, 3);
697
+ CREATE_CVTCOLOR_FUNC(rb_XYZ2RGB, CV_XYZ2RGB, 3, 3);
698
+ CREATE_CVTCOLOR_FUNC(rb_BGR2YCrCb, CV_BGR2YCrCb, 3, 3);
699
+ CREATE_CVTCOLOR_FUNC(rb_RGB2YCrCb, CV_RGB2YCrCb, 3, 3);
700
+ CREATE_CVTCOLOR_FUNC(rb_YCrCb2BGR, CV_YCrCb2BGR, 3, 3);
701
+ CREATE_CVTCOLOR_FUNC(rb_YCrCb2RGB, CV_YCrCb2RGB, 0, 3);
702
+ CREATE_CVTCOLOR_FUNC(rb_BGR2HSV, CV_BGR2HSV, 3, 3);
703
+ CREATE_CVTCOLOR_FUNC(rb_RGB2HSV, CV_RGB2HSV, 3, 3);
704
+ CREATE_CVTCOLOR_FUNC(rb_BGR2Lab, CV_BGR2Lab, 3, 3);
705
+ CREATE_CVTCOLOR_FUNC(rb_RGB2Lab, CV_RGB2Lab, 3, 3);
706
+ CREATE_CVTCOLOR_FUNC(rb_BayerBG2BGR, CV_BayerBG2BGR, 3, 3);
707
+ CREATE_CVTCOLOR_FUNC(rb_BayerGB2BGR, CV_BayerGB2BGR, 3, 3);
708
+ CREATE_CVTCOLOR_FUNC(rb_BayerRG2BGR, CV_BayerRG2BGR, 3, 3);
709
+ CREATE_CVTCOLOR_FUNC(rb_BayerGR2BGR, CV_BayerGR2BGR, 3, 3);
710
+ CREATE_CVTCOLOR_FUNC(rb_BayerBG2RGB, CV_BayerBG2RGB, 3, 3);
711
+ CREATE_CVTCOLOR_FUNC(rb_BayerGB2RGB, CV_BayerGB2RGB, 3, 3);
712
+ CREATE_CVTCOLOR_FUNC(rb_BayerRG2RGB, CV_BayerRG2RGB, 3, 3);
713
+ CREATE_CVTCOLOR_FUNC(rb_BayerGR2RGB, CV_BayerGR2RGB, 3, 3);
714
+ CREATE_CVTCOLOR_FUNC(rb_BGR2Luv, CV_BGR2Luv, 3, 3);
715
+ CREATE_CVTCOLOR_FUNC(rb_RGB2Luv, CV_RGB2Luv, 3, 3);
716
+ CREATE_CVTCOLOR_FUNC(rb_BGR2HLS, CV_BGR2HLS, 3, 3);
717
+ CREATE_CVTCOLOR_FUNC(rb_RGB2HLS, CV_RGB2HLS, 3, 3);
718
+ CREATE_CVTCOLOR_FUNC(rb_HSV2BGR, CV_HSV2BGR, 3, 3);
719
+ CREATE_CVTCOLOR_FUNC(rb_HSV2RGB, CV_HSV2RGB, 3, 3);
720
+ CREATE_CVTCOLOR_FUNC(rb_Lab2BGR, CV_Lab2BGR, 3, 3);
721
+ CREATE_CVTCOLOR_FUNC(rb_Lab2RGB, CV_Lab2RGB, 3, 3);
722
+ CREATE_CVTCOLOR_FUNC(rb_Luv2BGR, CV_Luv2BGR, 3, 3);
723
+ CREATE_CVTCOLOR_FUNC(rb_Luv2RGB, CV_Luv2RGB, 3, 3);
724
+ CREATE_CVTCOLOR_FUNC(rb_HLS2BGR, CV_HLS2BGR, 3, 3);
725
+ CREATE_CVTCOLOR_FUNC(rb_HLS2RGB, CV_HLS2RGB, 3, 3);
726
+
727
+ VALUE
728
+ rb_build_information(VALUE klass)
729
+ {
730
+ const char* ptr = cv::getBuildInformation().c_str();
731
+ return rb_str_new(ptr, strlen(ptr));
732
+ }
733
+
734
+
735
+ int
736
+ error_callback(int status, const char *function_name, const char *error_message,
737
+ const char *file_name, int line, void *user_data)
738
+ {
739
+ // dummy
740
+ return 0;
741
+ }
742
+
743
+ __NAMESPACE_END_OPENCV
744
+
745
+ extern "C" {
746
+ void
747
+ Init_opencv()
748
+ {
749
+ cvRedirectError((CvErrorCallback)mOpenCV::error_callback);
750
+
751
+ mOpenCV::init_ruby_module();
752
+
753
+ mOpenCV::cCvError::init_ruby_class();
754
+ mOpenCV::cCvPoint::init_ruby_class();
755
+ mOpenCV::cCvPoint2D32f::init_ruby_class();
756
+ mOpenCV::cCvPoint3D32f::init_ruby_class();
757
+ mOpenCV::cCvSize::init_ruby_class();
758
+ mOpenCV::cCvSize2D32f::init_ruby_class();
759
+ mOpenCV::cCvRect::init_ruby_class();
760
+ mOpenCV::cCvScalar::init_ruby_class();
761
+ mOpenCV::cCvSlice::init_ruby_class();
762
+ mOpenCV::cCvTermCriteria::init_ruby_class();
763
+ mOpenCV::cCvBox2D::init_ruby_class();
764
+ mOpenCV::cCvFont::init_ruby_class();
765
+ mOpenCV::cIplConvKernel::init_ruby_class();
766
+ mOpenCV::cCvMoments::init_ruby_class();
767
+ mOpenCV::cCvHuMoments::init_ruby_class();
768
+ mOpenCV::cCvConvexityDefect::init_ruby_class();
769
+
770
+ mOpenCV::cCvSURFPoint::init_ruby_class();
771
+ mOpenCV::cCvSURFParams::init_ruby_class();
772
+
773
+ mOpenCV::cCvMemStorage::init_ruby_class();
774
+
775
+ mOpenCV::cCvSeq::init_ruby_class();
776
+ mOpenCV::mCurve::init_ruby_module();
777
+ mOpenCV::mPointSet::init_ruby_module();
778
+ mOpenCV::cCvChain::init_ruby_class();
779
+ mOpenCV::cCvContour::init_ruby_class();
780
+ mOpenCV::cCvContourTree::init_ruby_class();
781
+
782
+ mOpenCV::cCvMat::init_ruby_class();
783
+ mOpenCV::cIplImage::init_ruby_class();
784
+ mOpenCV::cCvHistogram::init_ruby_class();
785
+ mOpenCV::cCvCapture::init_ruby_class();
786
+ mOpenCV::cCvVideoWriter::init_ruby_class();
787
+
788
+ mOpenCV::cCvLine::init_ruby_class();
789
+ mOpenCV::cCvTwoPoints::init_ruby_class();
790
+ mOpenCV::cCvCircle32f::init_ruby_class();
791
+
792
+ mOpenCV::cCvFeatureTree::init_ruby_class();
793
+
794
+ mOpenCV::cCvConnectedComp::init_ruby_class();
795
+ mOpenCV::cCvAvgComp::init_ruby_class();
796
+ mOpenCV::cCvHaarClassifierCascade::init_ruby_class();
797
+
798
+ mOpenCV::cAlgorithm::init_ruby_class();
799
+ mOpenCV::cFaceRecognizer::init_ruby_class();
800
+ mOpenCV::cEigenFaces::init_ruby_class();
801
+ mOpenCV::cFisherFaces::init_ruby_class();
802
+ mOpenCV::cLBPH::init_ruby_class();
803
+
804
+ mOpenCV::mGUI::init_ruby_module();
805
+ mOpenCV::mGUI::cWindow::init_ruby_class();
806
+ mOpenCV::mGUI::cTrackbar::init_ruby_class();
807
+ mOpenCV::mGUI::cMouseEvent::init_ruby_class();
808
+
809
+ #ifdef HAVE_ML_H
810
+ /* feature support.
811
+ mOpenCV::mMachineLearning::init_ruby_module();
812
+ */
813
+ #endif
814
+
815
+ #ifdef HAVE_OPENCV2_NONFREE_NONFREE_HPP
816
+ cv::initModule_nonfree();
817
+ #endif
818
+ }
819
+ }