opencv 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. data/History.txt +5 -0
  2. data/License.txt +30 -0
  3. data/Manifest.txt +115 -0
  4. data/README.txt +47 -0
  5. data/Rakefile +34 -0
  6. data/examples/convexhull.rb +41 -0
  7. data/examples/face_detect.rb +25 -0
  8. data/examples/houghcircle.rb +23 -0
  9. data/examples/inpaint.png +0 -0
  10. data/examples/inpaint.rb +43 -0
  11. data/examples/paint.rb +72 -0
  12. data/examples/snake.rb +43 -0
  13. data/examples/stuff.jpg +0 -0
  14. data/ext/curve.cpp +103 -0
  15. data/ext/curve.h +34 -0
  16. data/ext/cvavgcomp.cpp +67 -0
  17. data/ext/cvavgcomp.h +39 -0
  18. data/ext/cvbox2d.cpp +114 -0
  19. data/ext/cvbox2d.h +53 -0
  20. data/ext/cvcapture.cpp +276 -0
  21. data/ext/cvcapture.h +54 -0
  22. data/ext/cvchain.cpp +184 -0
  23. data/ext/cvchain.h +43 -0
  24. data/ext/cvchaincode.cpp +49 -0
  25. data/ext/cvchaincode.h +43 -0
  26. data/ext/cvcircle32f.cpp +90 -0
  27. data/ext/cvcircle32f.h +53 -0
  28. data/ext/cvcondensation.cpp +230 -0
  29. data/ext/cvcondensation.h +49 -0
  30. data/ext/cvconnectedcomp.cpp +115 -0
  31. data/ext/cvconnectedcomp.h +46 -0
  32. data/ext/cvcontour.cpp +219 -0
  33. data/ext/cvcontour.h +47 -0
  34. data/ext/cvcontourtree.cpp +86 -0
  35. data/ext/cvcontourtree.h +41 -0
  36. data/ext/cvconvexitydefect.cpp +103 -0
  37. data/ext/cvconvexitydefect.h +42 -0
  38. data/ext/cverror.cpp +140 -0
  39. data/ext/cverror.h +79 -0
  40. data/ext/cvfont.cpp +173 -0
  41. data/ext/cvfont.h +56 -0
  42. data/ext/cvhaarclassifiercascade.cpp +159 -0
  43. data/ext/cvhaarclassifiercascade.h +41 -0
  44. data/ext/cvhistogram.cpp +200 -0
  45. data/ext/cvhistogram.h +51 -0
  46. data/ext/cvindex.cpp +73 -0
  47. data/ext/cvindex.h +40 -0
  48. data/ext/cvline.cpp +106 -0
  49. data/ext/cvline.h +52 -0
  50. data/ext/cvmat.cpp +4809 -0
  51. data/ext/cvmat.h +286 -0
  52. data/ext/cvmatnd.cpp +44 -0
  53. data/ext/cvmatnd.h +28 -0
  54. data/ext/cvmemstorage.cpp +64 -0
  55. data/ext/cvmemstorage.h +53 -0
  56. data/ext/cvmoments.cpp +204 -0
  57. data/ext/cvmoments.h +48 -0
  58. data/ext/cvpoint.cpp +229 -0
  59. data/ext/cvpoint.h +59 -0
  60. data/ext/cvpoint2d32f.cpp +213 -0
  61. data/ext/cvpoint2d32f.h +61 -0
  62. data/ext/cvpoint3d32f.cpp +245 -0
  63. data/ext/cvpoint3d32f.h +64 -0
  64. data/ext/cvrect.cpp +340 -0
  65. data/ext/cvrect.h +79 -0
  66. data/ext/cvscalar.cpp +227 -0
  67. data/ext/cvscalar.h +63 -0
  68. data/ext/cvseq.cpp +583 -0
  69. data/ext/cvseq.h +71 -0
  70. data/ext/cvset.cpp +63 -0
  71. data/ext/cvset.h +39 -0
  72. data/ext/cvsize.cpp +223 -0
  73. data/ext/cvsize.h +63 -0
  74. data/ext/cvsize2d32f.cpp +180 -0
  75. data/ext/cvsize2d32f.h +59 -0
  76. data/ext/cvslice.cpp +82 -0
  77. data/ext/cvslice.h +53 -0
  78. data/ext/cvsparsemat.cpp +44 -0
  79. data/ext/cvsparsemat.h +28 -0
  80. data/ext/cvtermcriteria.cpp +183 -0
  81. data/ext/cvtermcriteria.h +71 -0
  82. data/ext/cvtwopoints.cpp +98 -0
  83. data/ext/cvtwopoints.h +50 -0
  84. data/ext/cvvector.cpp +206 -0
  85. data/ext/cvvector.h +54 -0
  86. data/ext/cvvideowriter.cpp +116 -0
  87. data/ext/cvvideowriter.h +41 -0
  88. data/ext/extconf.rb +61 -0
  89. data/ext/gui.cpp +65 -0
  90. data/ext/gui.h +33 -0
  91. data/ext/iplconvkernel.cpp +177 -0
  92. data/ext/iplconvkernel.h +52 -0
  93. data/ext/iplimage.cpp +238 -0
  94. data/ext/iplimage.h +54 -0
  95. data/ext/mouseevent.cpp +184 -0
  96. data/ext/mouseevent.h +59 -0
  97. data/ext/opencv.cpp +481 -0
  98. data/ext/opencv.h +356 -0
  99. data/ext/point3dset.cpp +41 -0
  100. data/ext/point3dset.h +31 -0
  101. data/ext/pointset.cpp +238 -0
  102. data/ext/pointset.h +69 -0
  103. data/ext/trackbar.cpp +122 -0
  104. data/ext/trackbar.h +65 -0
  105. data/ext/window.cpp +368 -0
  106. data/ext/window.h +56 -0
  107. data/images/CvMat_sobel.png +0 -0
  108. data/images/CvMat_sub_rect.png +0 -0
  109. data/images/CvSeq_relationmap.png +0 -0
  110. data/images/face_detect_from_lena.jpg +0 -0
  111. data/lib/opencv.rb +3 -0
  112. data/lib/version.rb +3 -0
  113. data/setup/setup.cygwin.rb +120 -0
  114. data/setup/setup.mingw.rb +99 -0
  115. data/setup/setup.mswin32.rb +103 -0
  116. data/test/test_opencv.rb +4 -0
  117. metadata +191 -0
@@ -0,0 +1,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