opencv 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/History.txt +5 -0
  2. data/License.txt +30 -0
  3. data/Manifest.txt +115 -0
  4. data/README.txt +47 -0
  5. data/Rakefile +34 -0
  6. data/examples/convexhull.rb +41 -0
  7. data/examples/face_detect.rb +25 -0
  8. data/examples/houghcircle.rb +23 -0
  9. data/examples/inpaint.png +0 -0
  10. data/examples/inpaint.rb +43 -0
  11. data/examples/paint.rb +72 -0
  12. data/examples/snake.rb +43 -0
  13. data/examples/stuff.jpg +0 -0
  14. data/ext/curve.cpp +103 -0
  15. data/ext/curve.h +34 -0
  16. data/ext/cvavgcomp.cpp +67 -0
  17. data/ext/cvavgcomp.h +39 -0
  18. data/ext/cvbox2d.cpp +114 -0
  19. data/ext/cvbox2d.h +53 -0
  20. data/ext/cvcapture.cpp +276 -0
  21. data/ext/cvcapture.h +54 -0
  22. data/ext/cvchain.cpp +184 -0
  23. data/ext/cvchain.h +43 -0
  24. data/ext/cvchaincode.cpp +49 -0
  25. data/ext/cvchaincode.h +43 -0
  26. data/ext/cvcircle32f.cpp +90 -0
  27. data/ext/cvcircle32f.h +53 -0
  28. data/ext/cvcondensation.cpp +230 -0
  29. data/ext/cvcondensation.h +49 -0
  30. data/ext/cvconnectedcomp.cpp +115 -0
  31. data/ext/cvconnectedcomp.h +46 -0
  32. data/ext/cvcontour.cpp +219 -0
  33. data/ext/cvcontour.h +47 -0
  34. data/ext/cvcontourtree.cpp +86 -0
  35. data/ext/cvcontourtree.h +41 -0
  36. data/ext/cvconvexitydefect.cpp +103 -0
  37. data/ext/cvconvexitydefect.h +42 -0
  38. data/ext/cverror.cpp +140 -0
  39. data/ext/cverror.h +79 -0
  40. data/ext/cvfont.cpp +173 -0
  41. data/ext/cvfont.h +56 -0
  42. data/ext/cvhaarclassifiercascade.cpp +159 -0
  43. data/ext/cvhaarclassifiercascade.h +41 -0
  44. data/ext/cvhistogram.cpp +200 -0
  45. data/ext/cvhistogram.h +51 -0
  46. data/ext/cvindex.cpp +73 -0
  47. data/ext/cvindex.h +40 -0
  48. data/ext/cvline.cpp +106 -0
  49. data/ext/cvline.h +52 -0
  50. data/ext/cvmat.cpp +4809 -0
  51. data/ext/cvmat.h +286 -0
  52. data/ext/cvmatnd.cpp +44 -0
  53. data/ext/cvmatnd.h +28 -0
  54. data/ext/cvmemstorage.cpp +64 -0
  55. data/ext/cvmemstorage.h +53 -0
  56. data/ext/cvmoments.cpp +204 -0
  57. data/ext/cvmoments.h +48 -0
  58. data/ext/cvpoint.cpp +229 -0
  59. data/ext/cvpoint.h +59 -0
  60. data/ext/cvpoint2d32f.cpp +213 -0
  61. data/ext/cvpoint2d32f.h +61 -0
  62. data/ext/cvpoint3d32f.cpp +245 -0
  63. data/ext/cvpoint3d32f.h +64 -0
  64. data/ext/cvrect.cpp +340 -0
  65. data/ext/cvrect.h +79 -0
  66. data/ext/cvscalar.cpp +227 -0
  67. data/ext/cvscalar.h +63 -0
  68. data/ext/cvseq.cpp +583 -0
  69. data/ext/cvseq.h +71 -0
  70. data/ext/cvset.cpp +63 -0
  71. data/ext/cvset.h +39 -0
  72. data/ext/cvsize.cpp +223 -0
  73. data/ext/cvsize.h +63 -0
  74. data/ext/cvsize2d32f.cpp +180 -0
  75. data/ext/cvsize2d32f.h +59 -0
  76. data/ext/cvslice.cpp +82 -0
  77. data/ext/cvslice.h +53 -0
  78. data/ext/cvsparsemat.cpp +44 -0
  79. data/ext/cvsparsemat.h +28 -0
  80. data/ext/cvtermcriteria.cpp +183 -0
  81. data/ext/cvtermcriteria.h +71 -0
  82. data/ext/cvtwopoints.cpp +98 -0
  83. data/ext/cvtwopoints.h +50 -0
  84. data/ext/cvvector.cpp +206 -0
  85. data/ext/cvvector.h +54 -0
  86. data/ext/cvvideowriter.cpp +116 -0
  87. data/ext/cvvideowriter.h +41 -0
  88. data/ext/extconf.rb +61 -0
  89. data/ext/gui.cpp +65 -0
  90. data/ext/gui.h +33 -0
  91. data/ext/iplconvkernel.cpp +177 -0
  92. data/ext/iplconvkernel.h +52 -0
  93. data/ext/iplimage.cpp +238 -0
  94. data/ext/iplimage.h +54 -0
  95. data/ext/mouseevent.cpp +184 -0
  96. data/ext/mouseevent.h +59 -0
  97. data/ext/opencv.cpp +481 -0
  98. data/ext/opencv.h +356 -0
  99. data/ext/point3dset.cpp +41 -0
  100. data/ext/point3dset.h +31 -0
  101. data/ext/pointset.cpp +238 -0
  102. data/ext/pointset.h +69 -0
  103. data/ext/trackbar.cpp +122 -0
  104. data/ext/trackbar.h +65 -0
  105. data/ext/window.cpp +368 -0
  106. data/ext/window.h +56 -0
  107. data/images/CvMat_sobel.png +0 -0
  108. data/images/CvMat_sub_rect.png +0 -0
  109. data/images/CvSeq_relationmap.png +0 -0
  110. data/images/face_detect_from_lena.jpg +0 -0
  111. data/lib/opencv.rb +3 -0
  112. data/lib/version.rb +3 -0
  113. data/setup/setup.cygwin.rb +120 -0
  114. data/setup/setup.mingw.rb +99 -0
  115. data/setup/setup.mswin32.rb +103 -0
  116. data/test/test_opencv.rb +4 -0
  117. metadata +191 -0
@@ -0,0 +1,43 @@
1
+ /************************************************************
2
+
3
+ cvchain.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2007 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVCHAIN_H
11
+ #define RUBY_OPENCV_CVCHAIN_H
12
+ #include "opencv.h"
13
+
14
+ #define __NAMESPACE_BEGIN_CVCHAIN namespace cCvChain{
15
+ #define __NAMESPACE_END_CVCHAIN }
16
+
17
+ __NAMESPACE_BEGIN_OPENCV
18
+ __NAMESPACE_BEGIN_CVCHAIN
19
+
20
+ VALUE rb_class();
21
+
22
+ void define_ruby_class();
23
+
24
+ VALUE rb_origin(VALUE self);
25
+ VALUE rb_set_origin(VALUE self, VALUE origin);
26
+ VALUE rb_codes(VALUE self);
27
+ VALUE rb_points(VALUE self);
28
+ VALUE rb_approx_chain(int argc, VALUE *argv, VALUE self);
29
+
30
+ VALUE new_object();
31
+
32
+ __NAMESPACE_END_CVCHAIN
33
+
34
+ inline CvChain*
35
+ CVCHAIN(VALUE object){
36
+ CvChain *ptr;
37
+ Data_Get_Struct(object, CvChain, ptr);
38
+ return ptr;
39
+ }
40
+
41
+ __NAMESPACE_END_OPENCV
42
+
43
+ #endif // RUBY_OPENCV_CVCHAIN_H
@@ -0,0 +1,49 @@
1
+ /************************************************************
2
+
3
+ cvchaincode.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2007 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "cvchaincode.h"
11
+ /*
12
+ * Document-class: OpenCV::CvChainCode
13
+ *
14
+ * Freeman chain code.
15
+ */
16
+ __NAMESPACE_BEGIN_OPENCV
17
+ __NAMESPACE_BEGIN_CVCHAINCODE
18
+
19
+ VALUE rb_klass;
20
+
21
+ VALUE
22
+ rb_class()
23
+ {
24
+ return rb_klass;
25
+ }
26
+
27
+ void
28
+ define_ruby_class()
29
+ {
30
+ if (rb_klass)
31
+ return;
32
+ /*
33
+ * opencv = rb_define_module("OpenCV");
34
+ *
35
+ * note: this comment is used by rdoc.
36
+ */
37
+ VALUE opencv = rb_module_opencv();
38
+
39
+ rb_klass = rb_define_class_under(opencv, "CvChainCode", rb_cObject);
40
+ }
41
+
42
+ VALUE
43
+ rb_to_i(VALUE self)
44
+ {
45
+ return CHR2FIX(CVCHAINCODE(self)->code);
46
+ }
47
+
48
+ __NAMESPACE_END_CVCHAINCODE
49
+ __NAMESPACE_END_OPENCV
@@ -0,0 +1,43 @@
1
+ /************************************************************
2
+
3
+ opchaincode.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2008 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVCHAINCODE_H
11
+ #define RUBY_OPENCV_CVCHAINCODE_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVCHAINCODE namespace cCvChainCode{
16
+ #define __NAMESPACE_END_CVCHAINCODE }
17
+
18
+ typedef struct CvChainCode{
19
+ char code;
20
+ }CvChainCode;
21
+
22
+ __NAMESPACE_BEGIN_OPENCV
23
+ __NAMESPACE_BEGIN_CVCHAINCODE
24
+
25
+ VALUE rb_class();
26
+
27
+ void define_ruby_class();
28
+
29
+ VALUE rb_to_i(VALUE self);
30
+
31
+ __NAMESPACE_END_CVCHAINCODE
32
+
33
+ inline CvChainCode*
34
+ CVCHAINCODE(VALUE object){
35
+ CvChainCode *ptr;
36
+ Data_Get_Struct(object, CvChainCode, ptr);
37
+ return ptr;
38
+ }
39
+
40
+
41
+ __NAMESPACE_END_OPENCV
42
+
43
+ #endif // RUBY_OPENCV_CVCHAINCODE_H
@@ -0,0 +1,90 @@
1
+ /************************************************************
2
+
3
+ cvcircle32f.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "cvcircle32f.h"
11
+ /*
12
+ * Document-class: OpenCV::CvCircle32f
13
+ *
14
+ * Combination of center and radius.
15
+ *
16
+ * see CvMat#hough_circles
17
+ */
18
+ __NAMESPACE_BEGIN_OPENCV
19
+ __NAMESPACE_BEGIN_CVCIRCLE32F
20
+
21
+ VALUE rb_klass;
22
+
23
+ VALUE
24
+ rb_class()
25
+ {
26
+ return rb_klass;
27
+ }
28
+
29
+ void
30
+ define_ruby_class()
31
+ {
32
+ if (rb_klass)
33
+ return;
34
+ /*
35
+ * opencv = rb_define_module("OpenCV");
36
+ *
37
+ * note: this comment is used by rdoc.
38
+ */
39
+ VALUE opencv = rb_module_opencv();
40
+
41
+ rb_klass = rb_define_class_under(opencv, "CvCircle32f", rb_cObject);
42
+ rb_define_alloc_func(rb_klass, rb_allocate);
43
+ rb_define_method(rb_klass, "center", RUBY_METHOD_FUNC(rb_center), 0);
44
+ rb_define_method(rb_klass, "radius", RUBY_METHOD_FUNC(rb_radius), 0);
45
+
46
+ //rb_define_method(rb_klass, "to_s", RUBY_METHOD_FUNC(rb_to_s), 0);
47
+ rb_define_method(rb_klass, "to_ary", RUBY_METHOD_FUNC(rb_to_ary), 0);
48
+ }
49
+
50
+ VALUE
51
+ rb_allocate(VALUE klass)
52
+ {
53
+ CvCircle32f *ptr;
54
+ return Data_Make_Struct(klass, CvCircle32f, 0, -1, ptr);
55
+ }
56
+
57
+ /*
58
+ * Return parameter on center.
59
+ */
60
+ VALUE
61
+ rb_center(VALUE self)
62
+ {
63
+ return cCvPoint2D32f::new_object(CVCIRCLE32F(self)->center);
64
+ }
65
+
66
+ /*
67
+ * Return parameter on radius.
68
+ */
69
+ VALUE
70
+ rb_radius(VALUE self)
71
+ {
72
+ return rb_float_new(CVCIRCLE32F(self)->radius);
73
+ }
74
+
75
+ VALUE
76
+ rb_to_ary(VALUE self)
77
+ {
78
+ return rb_ary_new3(2, rb_center(self), rb_radius(self));
79
+ }
80
+
81
+ VALUE
82
+ new_object(CvCircle32f circle32f)
83
+ {
84
+ VALUE object = rb_allocate(rb_klass);
85
+ *CVCIRCLE32F(object) = circle32f;
86
+ return object;
87
+ }
88
+
89
+ __NAMESPACE_END_CVCIRCLE32F
90
+ __NAMESPACE_END_OPENCV
@@ -0,0 +1,53 @@
1
+ /************************************************************
2
+
3
+ cvcircle32f.h -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2007 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #ifndef RUBY_OPENCV_CVCIRCLE32F_H
11
+ #define RUBY_OPENCV_CVCIRCLE32F_H
12
+
13
+ #include "opencv.h"
14
+
15
+ #define __NAMESPACE_BEGIN_CVCIRCLE32F namespace cCvCircle32f{
16
+ #define __NAMESPACE_END_CVCIRCLE32F }
17
+
18
+ __NAMESPACE_BEGIN_OPENCV
19
+
20
+ typedef struct CvCircle32f{
21
+ CvPoint2D32f center;
22
+ float radius;
23
+ } CvCircle32f;
24
+
25
+ __NAMESPACE_BEGIN_CVCIRCLE32F
26
+
27
+ VALUE rb_class();
28
+
29
+ void define_ruby_class();
30
+
31
+ VALUE rb_allocate(VALUE klass);
32
+ VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
33
+ VALUE rb_center(VALUE self);
34
+ VALUE rb_radius(VALUE self);
35
+
36
+ VALUE rb_to_s(VALUE self);
37
+ VALUE rb_to_ary(VALUE self);
38
+
39
+ VALUE new_object(CvCircle32f circle32f);
40
+
41
+ __NAMESPACE_END_CVCIRCLE32F
42
+
43
+ inline CvCircle32f*
44
+ CVCIRCLE32F(VALUE object)
45
+ {
46
+ CvCircle32f *ptr;
47
+ Data_Get_Struct(object, CvCircle32f, ptr);
48
+ return ptr;
49
+ }
50
+
51
+ __NAMESPACE_END_OPENCV
52
+
53
+ #endif // RUBY_OPENCV_CVCIRCLE32F_H
@@ -0,0 +1,230 @@
1
+ /************************************************************
2
+
3
+ cvcondensation.cpp -
4
+
5
+ $Author: lsxi $
6
+
7
+ Copyright (C) 2005-2006 Masakazu Yonekura
8
+
9
+ ************************************************************/
10
+ #include "cvcondensation.h"
11
+ /*
12
+ * Document-class: OpenCV::CvConDensation
13
+ *
14
+ */
15
+ __NAMESPACE_BEGIN_OPENCV
16
+ __NAMESPACE_BEGIN_CVCONDENSATION
17
+
18
+ VALUE rb_klass;
19
+
20
+ VALUE
21
+ rb_class()
22
+ {
23
+ return rb_klass;
24
+ }
25
+
26
+ void
27
+ define_ruby_class()
28
+ {
29
+ if(rb_klass)
30
+ return;
31
+ /*
32
+ * opencv = rb_define_module("OpenCV");
33
+ *
34
+ * note: this comment is used by rdoc.
35
+ */
36
+ VALUE opencv = rb_module_opencv();
37
+ rb_klass = rb_define_class_under(opencv, "CvConDensation", rb_cObject);
38
+ rb_define_method(rb_klass, "dp", RUBY_METHOD_FUNC(rb_dp), 0);
39
+ rb_define_method(rb_klass, "mp", RUBY_METHOD_FUNC(rb_mp), 0);
40
+ rb_define_method(rb_klass, "dynamic_matrix", RUBY_METHOD_FUNC(rb_dynamic_matrix), 0);
41
+ rb_define_method(rb_klass, "confidence", RUBY_METHOD_FUNC(rb_confidence), 0);
42
+ rb_define_method(rb_klass, "cumulative", RUBY_METHOD_FUNC(rb_cumulative), 0);
43
+ rb_define_method(rb_klass, "state", RUBY_METHOD_FUNC(rb_state), 0);
44
+ rb_define_method(rb_klass, "samples_num", RUBY_METHOD_FUNC(rb_samples_num), 0);
45
+ rb_define_method(rb_klass, "init_sample_set", RUBY_METHOD_FUNC(rb_init_sample_set), 2);
46
+ rb_define_method(rb_klass, "update_by_time", RUBY_METHOD_FUNC(rb_update_by_time), 0);
47
+ rb_define_alias(rb_klass, "update", "update_by_time");
48
+ rb_define_method(rb_klass, "each_sample", RUBY_METHOD_FUNC(rb_each_sample), 0);
49
+ rb_define_method(rb_klass, "calculate_confidence", RUBY_METHOD_FUNC(rb_calculate_confidence), 0);
50
+ }
51
+
52
+ /*
53
+ * call-seq:
54
+ * dp -> int
55
+ *
56
+ * Return dimension of state vector
57
+ */
58
+ VALUE
59
+ rb_dp(VALUE self)
60
+ {
61
+ return INT2FIX(CVCONDENSATION(self)->DP);
62
+ }
63
+
64
+ /*
65
+ * call-seq:
66
+ * mp -> int
67
+ *
68
+ * Return demension of measurement vector.
69
+ */
70
+ VALUE
71
+ rb_mp(VALUE self)
72
+ {
73
+ return INT2FIX(CVCONDENSATION(self)->MP);
74
+ }
75
+
76
+ /*
77
+ * call-seq:
78
+ * dynamic_matrix -> mat
79
+ *
80
+ * Return matrix of the linear Dynamics system.
81
+ */
82
+ VALUE
83
+ rb_dynamic_matrix(VALUE self)
84
+ {
85
+ CvConDensation *cd = CVCONDENSATION(self);
86
+ return DEPEND_OBJECT(cCvMat::rb_class(), cvInitMatHeader(ALLOC(CvMat), cd->DP, cd->DP, CV_MAKETYPE(CV_32F, 1), cd->DynamMatr), self);
87
+ }
88
+
89
+ /*
90
+ * call-seq:
91
+ * confidence -> mat
92
+ *
93
+ * Return confidence for each sample.
94
+ */
95
+ VALUE
96
+ rb_confidence(VALUE self)
97
+ {
98
+ CvConDensation *cd = CVCONDENSATION(self);
99
+ return DEPEND_OBJECT(cCvMat::rb_class(), cvInitMatHeader(ALLOC(CvMat), cd->SamplesNum, 1, CV_MAKETYPE(CV_32F, 1), cd->flConfidence), self);
100
+ }
101
+
102
+ /*
103
+ * call-seq:
104
+ * cumulative -> mat
105
+ *
106
+ * Return cumulative confidence.
107
+ */
108
+ VALUE
109
+ rb_cumulative(VALUE self)
110
+ {
111
+ CvConDensation *cd = CVCONDENSATION(self);
112
+ return DEPEND_OBJECT(cCvMat::rb_class(), cvInitMatHeader(ALLOC(CvMat), cd->SamplesNum, 1, CV_MAKETYPE(CV_32F, 1), cd->flCumulative), self);
113
+ }
114
+
115
+ /*
116
+ * call-seq:
117
+ * state -> mat
118
+ *
119
+ * Return vector of state
120
+ */
121
+ VALUE
122
+ rb_state(VALUE self)
123
+ {
124
+ CvConDensation *cd = CVCONDENSATION(self);
125
+ return DEPEND_OBJECT(cCvMat::rb_class(), cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->State), self);
126
+ }
127
+
128
+ /*
129
+ * call-seq:
130
+ * samples_num -> int
131
+ *
132
+ * Return number of the samples
133
+ */
134
+ VALUE
135
+ rb_samples_num(VALUE self)
136
+ {
137
+ return INT2FIX(CVCONDENSATION(self)->SamplesNum);
138
+ }
139
+
140
+ /*
141
+ * call-seq:
142
+ * init_sample_set(upper, lower)
143
+ *
144
+ * Initializes sample set for ConDensation algorithm.
145
+ * Fills the samples with values within specified(lower to upper) ranges.
146
+ */
147
+ VALUE
148
+ rb_init_sample_set(VALUE self, VALUE lower, VALUE upper)
149
+ {
150
+ CvConDensation *cd = CVCONDENSATION(self);
151
+ CvMat *lower_bound = CVMAT(lower), *upper_bound = CVMAT(upper), lb_stub, ub_stub;
152
+ int lower_type = lower_bound->type, upper_type = lower_bound->type;
153
+ if (lower_type != CV_32FC1 || lower_bound->cols != 1) {
154
+ if (CV_MAT_DEPTH(lower_type) == CV_32F) {
155
+ lower_bound = cvReshape(lower_bound, &lb_stub, 1, lower_bound->rows * lower_bound->cols);
156
+ } else {
157
+ lower = cCvMat::new_object(cvSize(lower_bound->rows * lower_bound->cols, 1), CV_MAKETYPE(CV_32S, 1));
158
+ cvConvertScale(lower_bound, CVARR(lower));
159
+ lower_bound = CVMAT(lower);
160
+ }
161
+ }
162
+ if (upper_type != CV_32FC1 || upper_bound->cols != 1) {
163
+ if (CV_MAT_DEPTH(upper_type) == CV_32F) {
164
+ upper_bound = cvReshape(upper_bound, &ub_stub, 1, upper_bound->rows * upper_bound->cols);
165
+ } else {
166
+ upper = cCvMat::new_object(cvSize(upper_bound->rows * upper_bound->cols, 1), CV_MAKETYPE(CV_32F, 1));
167
+ cvConvertScale(upper_bound, CVARR(upper));
168
+ upper_bound = CVMAT(upper);
169
+ }
170
+ }
171
+ if (lower_bound->rows != cd->DP || upper_bound->rows != cd->DP) {
172
+ rb_raise(rb_eTypeError, "sample matrix step unmatch.");
173
+ }
174
+ cvConDensInitSampleSet(cd, lower_bound, upper_bound);
175
+ return self;
176
+ }
177
+
178
+ /*
179
+ * call-seq:
180
+ * update_by_time
181
+ *
182
+ * Estimates subsequent model state.
183
+ */
184
+ VALUE
185
+ rb_update_by_time(VALUE self)
186
+ {
187
+ cvConDensUpdateByTime(CVCONDENSATION(self));
188
+ return self;
189
+ }
190
+
191
+ /*
192
+ * call-seq:
193
+ * each_sample{|mat| ... }
194
+ *
195
+ * Evaluate each sample by given block.
196
+ */
197
+ VALUE
198
+ rb_each_sample(VALUE self)
199
+ {
200
+ CvConDensation *cd = CVCONDENSATION(self);
201
+ if (rb_block_given_p()) {
202
+ for (int i = 0; i < cd->SamplesNum; i++) {
203
+ rb_yield(DEPEND_OBJECT(cCvMat::rb_class(), cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->flSamples[i]), self));
204
+ }
205
+ }
206
+ return self;
207
+ }
208
+
209
+ /*
210
+ * call-seq:
211
+ * calculate_confidence{|value| ... }
212
+ *
213
+ * Evalute each sample by given block, then return value set to confidence.
214
+ */
215
+ VALUE
216
+ rb_calculate_confidence(VALUE self)
217
+ {
218
+ VALUE value;
219
+ CvConDensation *cd = CVCONDENSATION(self);
220
+ if (rb_block_given_p()) {
221
+ for (int i = 0; i < cd->SamplesNum; i++) {
222
+ value = rb_yield(DEPEND_OBJECT(cCvMat::rb_class(), cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->flSamples[i]), self));
223
+ cd->flConfidence[i] = NUM2DBL(value);
224
+ }
225
+ }
226
+ return self;
227
+ }
228
+
229
+ __NAMESPACE_END_CVCONDENSATION
230
+ __NAMESPACE_END_OPENCV