ruby-opencv 0.0.9-x86-mswin32 → 0.0.10.pre-x86-mswin32

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/History.txt +5 -5
  4. data/README.md +1 -1
  5. data/examples/contours/contour_retrieval_modes.rb +139 -139
  6. data/examples/face_detect.rb +20 -20
  7. data/examples/houghcircle.rb +22 -22
  8. data/examples/paint.rb +70 -70
  9. data/examples/snake.rb +43 -43
  10. data/ext/opencv/cvcondensation.cpp +282 -282
  11. data/ext/opencv/cvcondensation.h +49 -49
  12. data/ext/opencv/cvmat.cpp +6 -6
  13. data/ext/opencv/cvmatnd.cpp +44 -44
  14. data/ext/opencv/cvmatnd.h +28 -28
  15. data/ext/opencv/cvmemstorage.cpp +68 -68
  16. data/ext/opencv/cvmemstorage.h +53 -53
  17. data/ext/opencv/cvmoments.h +75 -75
  18. data/ext/opencv/cvpoint.h +64 -64
  19. data/ext/opencv/cvpoint2d32f.h +63 -63
  20. data/ext/opencv/cvpoint3d32f.h +66 -66
  21. data/ext/opencv/cvrect.h +79 -79
  22. data/ext/opencv/cvscalar.h +71 -71
  23. data/ext/opencv/cvsize.h +65 -65
  24. data/ext/opencv/cvsize2d32f.h +64 -64
  25. data/ext/opencv/cvslice.h +61 -61
  26. data/ext/opencv/cvsparsemat.cpp +44 -44
  27. data/ext/opencv/cvsparsemat.h +28 -28
  28. data/ext/opencv/cvsurfparams.h +58 -58
  29. data/ext/opencv/cvsurfpoint.h +52 -52
  30. data/ext/opencv/cvtermcriteria.h +71 -71
  31. data/ext/opencv/cvtwopoints.cpp +116 -116
  32. data/ext/opencv/cvtwopoints.h +51 -51
  33. data/ext/opencv/cvvideowriter.h +43 -43
  34. data/ext/opencv/gui.cpp +68 -68
  35. data/ext/opencv/gui.h +30 -30
  36. data/ext/opencv/iplconvkernel.h +71 -71
  37. data/ext/opencv/mouseevent.cpp +181 -181
  38. data/ext/opencv/mouseevent.h +56 -56
  39. data/ext/opencv/opencv.cpp +5 -0
  40. data/ext/opencv/trackbar.h +69 -69
  41. data/ext/opencv/window.h +66 -66
  42. data/lib/opencv/version.rb +1 -1
  43. data/ruby-opencv.gemspec +7 -7
  44. data/test/test_cvmat_imageprocessing.rb +15 -25
  45. data/test/test_opencv.rb +7 -2
  46. metadata +7 -7
@@ -1,43 +1,43 @@
1
- #!/usr/bin/env ruby
2
- # snake.rb
3
- require "rubygems"
4
- require "opencv"
5
- include OpenCV
6
-
7
- puts <<USAGE
8
- usage:
9
- left-click: set a point
10
- right-click: do snake
11
- USAGE
12
-
13
- window = GUI::Window.new "snake demo"
14
- image = CvMat.new(256, 256, :cv8u, 1).clear!
15
- image.circle!(CvPoint.new(128,128), 40, :color => CvColor::White, :thickness => -1)
16
- display = image.GRAY2BGR
17
-
18
- window.show display
19
-
20
- points = []
21
-
22
- window.on_mouse{|mouse|
23
- case mouse.event
24
- when :left_button_down
25
- display.circle!(mouse, 1, :color => CvColor::Red, :thickness => 2)
26
- puts "set point (#{mouse.x},#{mouse.y})"
27
- points << CvPoint.new(mouse.x, mouse.y)
28
- window.show display
29
- when :right_button_down
30
- if points.length < 3
31
- puts "please set more point!"
32
- next
33
- end
34
- snake_points = image.snake_image(points, 1.0, 0.5, 1.5, CvSize.new(3, 3), 100)
35
- display = image.GRAY2BGR
36
- display.poly_line!([snake_points], :color => CvColor::Red, :is_closed => true, :thickness => 2)
37
- window.show display
38
- points.clear
39
- end
40
- }
41
-
42
- GUI::wait_key
43
-
1
+ #!/usr/bin/env ruby
2
+ # snake.rb
3
+ require "rubygems"
4
+ require "opencv"
5
+ include OpenCV
6
+
7
+ puts <<USAGE
8
+ usage:
9
+ left-click: set a point
10
+ right-click: do snake
11
+ USAGE
12
+
13
+ window = GUI::Window.new "snake demo"
14
+ image = CvMat.new(256, 256, :cv8u, 1).clear!
15
+ image.circle!(CvPoint.new(128,128), 40, :color => CvColor::White, :thickness => -1)
16
+ display = image.GRAY2BGR
17
+
18
+ window.show display
19
+
20
+ points = []
21
+
22
+ window.on_mouse{|mouse|
23
+ case mouse.event
24
+ when :left_button_down
25
+ display.circle!(mouse, 1, :color => CvColor::Red, :thickness => 2)
26
+ puts "set point (#{mouse.x},#{mouse.y})"
27
+ points << CvPoint.new(mouse.x, mouse.y)
28
+ window.show display
29
+ when :right_button_down
30
+ if points.length < 3
31
+ puts "please set more point!"
32
+ next
33
+ end
34
+ snake_points = image.snake_image(points, 1.0, 0.5, 1.5, CvSize.new(3, 3), 100)
35
+ display = image.GRAY2BGR
36
+ display.poly_line!([snake_points], :color => CvColor::Red, :is_closed => true, :thickness => 2)
37
+ window.show display
38
+ points.clear
39
+ end
40
+ }
41
+
42
+ GUI::wait_key
43
+
@@ -1,282 +1,282 @@
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 INT2NUM(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 INT2NUM(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
- CvMat* mat = NULL;
87
- try {
88
- mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, cd->DP, CV_MAKETYPE(CV_32F, 1), cd->DynamMatr);
89
- }
90
- catch (cv::Exception& e) {
91
- raise_cverror(e);
92
- }
93
- return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
94
- }
95
-
96
- /*
97
- * call-seq:
98
- * confidence -> mat
99
- *
100
- * Return confidence for each sample.
101
- */
102
- VALUE
103
- rb_confidence(VALUE self)
104
- {
105
- CvConDensation *cd = CVCONDENSATION(self);
106
- CvMat* mat = NULL;
107
- try {
108
- mat = cvInitMatHeader(ALLOC(CvMat), cd->SamplesNum, 1, CV_MAKETYPE(CV_32F, 1), cd->flConfidence);
109
- }
110
- catch (cv::Exception& e) {
111
- raise_cverror(e);
112
- }
113
- return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
114
- }
115
-
116
- /*
117
- * call-seq:
118
- * cumulative -> mat
119
- *
120
- * Return cumulative confidence.
121
- */
122
- VALUE
123
- rb_cumulative(VALUE self)
124
- {
125
- CvConDensation *cd = CVCONDENSATION(self);
126
- CvMat* mat = NULL;
127
- try {
128
- mat = cvInitMatHeader(ALLOC(CvMat), cd->SamplesNum, 1, CV_MAKETYPE(CV_32F, 1), cd->flCumulative);
129
- }
130
- catch (cv::Exception& e) {
131
- raise_cverror(e);
132
- }
133
- return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
134
- }
135
-
136
- /*
137
- * call-seq:
138
- * state -> mat
139
- *
140
- * Return vector of state
141
- */
142
- VALUE
143
- rb_state(VALUE self)
144
- {
145
- CvConDensation *cd = CVCONDENSATION(self);
146
- CvMat* mat = NULL;
147
- try {
148
- mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->State);
149
- }
150
- catch (cv::Exception& e) {
151
- raise_cverror(e);
152
- }
153
- return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
154
- }
155
-
156
- /*
157
- * call-seq:
158
- * samples_num -> int
159
- *
160
- * Return number of the samples
161
- */
162
- VALUE
163
- rb_samples_num(VALUE self)
164
- {
165
- return INT2NUM(CVCONDENSATION(self)->SamplesNum);
166
- }
167
-
168
- /*
169
- * call-seq:
170
- * init_sample_set(upper, lower)
171
- *
172
- * Initializes sample set for ConDensation algorithm.
173
- * Fills the samples with values within specified(lower to upper) ranges.
174
- */
175
- VALUE
176
- rb_init_sample_set(VALUE self, VALUE lower, VALUE upper)
177
- {
178
- CvConDensation *cd = CVCONDENSATION(self);
179
- CvMat *lower_bound = CVMAT_WITH_CHECK(lower), *upper_bound = CVMAT_WITH_CHECK(upper), lb_stub, ub_stub;
180
- int lower_type = lower_bound->type, upper_type = lower_bound->type;
181
- try {
182
- if (lower_type != CV_32FC1 || lower_bound->cols != 1) {
183
- if (CV_MAT_DEPTH(lower_type) == CV_32F) {
184
- lower_bound = cvReshape(lower_bound, &lb_stub, 1, lower_bound->rows * lower_bound->cols);
185
- }
186
- else {
187
- lower = cCvMat::new_object(cvSize(lower_bound->rows * lower_bound->cols, 1), CV_MAKETYPE(CV_32S, 1));
188
- cvConvertScale(lower_bound, CVARR(lower));
189
- lower_bound = CVMAT(lower);
190
- }
191
- }
192
- if (upper_type != CV_32FC1 || upper_bound->cols != 1) {
193
- if (CV_MAT_DEPTH(upper_type) == CV_32F) {
194
- upper_bound = cvReshape(upper_bound, &ub_stub, 1, upper_bound->rows * upper_bound->cols);
195
- }
196
- else {
197
- upper = cCvMat::new_object(cvSize(upper_bound->rows * upper_bound->cols, 1), CV_MAKETYPE(CV_32F, 1));
198
- cvConvertScale(upper_bound, CVARR(upper));
199
- upper_bound = CVMAT(upper);
200
- }
201
- }
202
- if (lower_bound->rows != cd->DP || upper_bound->rows != cd->DP) {
203
- rb_raise(rb_eTypeError, "sample matrix step unmatch.");
204
- }
205
- cvConDensInitSampleSet(cd, lower_bound, upper_bound);
206
- }
207
- catch (cv::Exception& e) {
208
- raise_cverror(e);
209
- }
210
- return self;
211
- }
212
-
213
- /*
214
- * call-seq:
215
- * update_by_time
216
- *
217
- * Estimates subsequent model state.
218
- */
219
- VALUE
220
- rb_update_by_time(VALUE self)
221
- {
222
- try {
223
- cvConDensUpdateByTime(CVCONDENSATION(self));
224
- }
225
- catch (cv::Exception& e) {
226
- raise_cverror(e);
227
- }
228
- return self;
229
- }
230
-
231
- /*
232
- * call-seq:
233
- * each_sample {|mat| ... }
234
- *
235
- * Evaluate each sample by given block.
236
- */
237
- VALUE
238
- rb_each_sample(VALUE self)
239
- {
240
- CvConDensation *cd = CVCONDENSATION(self);
241
- if (rb_block_given_p()) {
242
- try {
243
- for (int i = 0; i < cd->SamplesNum; ++i) {
244
- CvMat* mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->flSamples[i]);
245
- rb_yield(DEPEND_OBJECT(cCvMat::rb_class(), mat, self));
246
- }
247
- }
248
- catch (cv::Exception& e) {
249
- raise_cverror(e);
250
- }
251
- }
252
- return self;
253
- }
254
-
255
- /*
256
- * call-seq:
257
- * calculate_confidence {|value| ... }
258
- *
259
- * Evalute each sample by given block, then return value set to confidence.
260
- */
261
- VALUE
262
- rb_calculate_confidence(VALUE self)
263
- {
264
- VALUE value;
265
- CvConDensation *cd = CVCONDENSATION(self);
266
- if (rb_block_given_p()) {
267
- try {
268
- for (int i = 0; i < cd->SamplesNum; ++i) {
269
- CvMat* mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->flSamples[i]);
270
- value = rb_yield(DEPEND_OBJECT(cCvMat::rb_class(), mat, self));
271
- cd->flConfidence[i] = NUM2DBL(value);
272
- }
273
- }
274
- catch (cv::Exception& e) {
275
- raise_cverror(e);
276
- }
277
- }
278
- return self;
279
- }
280
-
281
- __NAMESPACE_END_CVCONDENSATION
282
- __NAMESPACE_END_OPENCV
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 INT2NUM(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 INT2NUM(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
+ CvMat* mat = NULL;
87
+ try {
88
+ mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, cd->DP, CV_MAKETYPE(CV_32F, 1), cd->DynamMatr);
89
+ }
90
+ catch (cv::Exception& e) {
91
+ raise_cverror(e);
92
+ }
93
+ return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
94
+ }
95
+
96
+ /*
97
+ * call-seq:
98
+ * confidence -> mat
99
+ *
100
+ * Return confidence for each sample.
101
+ */
102
+ VALUE
103
+ rb_confidence(VALUE self)
104
+ {
105
+ CvConDensation *cd = CVCONDENSATION(self);
106
+ CvMat* mat = NULL;
107
+ try {
108
+ mat = cvInitMatHeader(ALLOC(CvMat), cd->SamplesNum, 1, CV_MAKETYPE(CV_32F, 1), cd->flConfidence);
109
+ }
110
+ catch (cv::Exception& e) {
111
+ raise_cverror(e);
112
+ }
113
+ return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
114
+ }
115
+
116
+ /*
117
+ * call-seq:
118
+ * cumulative -> mat
119
+ *
120
+ * Return cumulative confidence.
121
+ */
122
+ VALUE
123
+ rb_cumulative(VALUE self)
124
+ {
125
+ CvConDensation *cd = CVCONDENSATION(self);
126
+ CvMat* mat = NULL;
127
+ try {
128
+ mat = cvInitMatHeader(ALLOC(CvMat), cd->SamplesNum, 1, CV_MAKETYPE(CV_32F, 1), cd->flCumulative);
129
+ }
130
+ catch (cv::Exception& e) {
131
+ raise_cverror(e);
132
+ }
133
+ return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
134
+ }
135
+
136
+ /*
137
+ * call-seq:
138
+ * state -> mat
139
+ *
140
+ * Return vector of state
141
+ */
142
+ VALUE
143
+ rb_state(VALUE self)
144
+ {
145
+ CvConDensation *cd = CVCONDENSATION(self);
146
+ CvMat* mat = NULL;
147
+ try {
148
+ mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->State);
149
+ }
150
+ catch (cv::Exception& e) {
151
+ raise_cverror(e);
152
+ }
153
+ return DEPEND_OBJECT(cCvMat::rb_class(), mat, self);
154
+ }
155
+
156
+ /*
157
+ * call-seq:
158
+ * samples_num -> int
159
+ *
160
+ * Return number of the samples
161
+ */
162
+ VALUE
163
+ rb_samples_num(VALUE self)
164
+ {
165
+ return INT2NUM(CVCONDENSATION(self)->SamplesNum);
166
+ }
167
+
168
+ /*
169
+ * call-seq:
170
+ * init_sample_set(upper, lower)
171
+ *
172
+ * Initializes sample set for ConDensation algorithm.
173
+ * Fills the samples with values within specified(lower to upper) ranges.
174
+ */
175
+ VALUE
176
+ rb_init_sample_set(VALUE self, VALUE lower, VALUE upper)
177
+ {
178
+ CvConDensation *cd = CVCONDENSATION(self);
179
+ CvMat *lower_bound = CVMAT_WITH_CHECK(lower), *upper_bound = CVMAT_WITH_CHECK(upper), lb_stub, ub_stub;
180
+ int lower_type = lower_bound->type, upper_type = lower_bound->type;
181
+ try {
182
+ if (lower_type != CV_32FC1 || lower_bound->cols != 1) {
183
+ if (CV_MAT_DEPTH(lower_type) == CV_32F) {
184
+ lower_bound = cvReshape(lower_bound, &lb_stub, 1, lower_bound->rows * lower_bound->cols);
185
+ }
186
+ else {
187
+ lower = cCvMat::new_object(cvSize(lower_bound->rows * lower_bound->cols, 1), CV_MAKETYPE(CV_32S, 1));
188
+ cvConvertScale(lower_bound, CVARR(lower));
189
+ lower_bound = CVMAT(lower);
190
+ }
191
+ }
192
+ if (upper_type != CV_32FC1 || upper_bound->cols != 1) {
193
+ if (CV_MAT_DEPTH(upper_type) == CV_32F) {
194
+ upper_bound = cvReshape(upper_bound, &ub_stub, 1, upper_bound->rows * upper_bound->cols);
195
+ }
196
+ else {
197
+ upper = cCvMat::new_object(cvSize(upper_bound->rows * upper_bound->cols, 1), CV_MAKETYPE(CV_32F, 1));
198
+ cvConvertScale(upper_bound, CVARR(upper));
199
+ upper_bound = CVMAT(upper);
200
+ }
201
+ }
202
+ if (lower_bound->rows != cd->DP || upper_bound->rows != cd->DP) {
203
+ rb_raise(rb_eTypeError, "sample matrix step unmatch.");
204
+ }
205
+ cvConDensInitSampleSet(cd, lower_bound, upper_bound);
206
+ }
207
+ catch (cv::Exception& e) {
208
+ raise_cverror(e);
209
+ }
210
+ return self;
211
+ }
212
+
213
+ /*
214
+ * call-seq:
215
+ * update_by_time
216
+ *
217
+ * Estimates subsequent model state.
218
+ */
219
+ VALUE
220
+ rb_update_by_time(VALUE self)
221
+ {
222
+ try {
223
+ cvConDensUpdateByTime(CVCONDENSATION(self));
224
+ }
225
+ catch (cv::Exception& e) {
226
+ raise_cverror(e);
227
+ }
228
+ return self;
229
+ }
230
+
231
+ /*
232
+ * call-seq:
233
+ * each_sample {|mat| ... }
234
+ *
235
+ * Evaluate each sample by given block.
236
+ */
237
+ VALUE
238
+ rb_each_sample(VALUE self)
239
+ {
240
+ CvConDensation *cd = CVCONDENSATION(self);
241
+ if (rb_block_given_p()) {
242
+ try {
243
+ for (int i = 0; i < cd->SamplesNum; ++i) {
244
+ CvMat* mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->flSamples[i]);
245
+ rb_yield(DEPEND_OBJECT(cCvMat::rb_class(), mat, self));
246
+ }
247
+ }
248
+ catch (cv::Exception& e) {
249
+ raise_cverror(e);
250
+ }
251
+ }
252
+ return self;
253
+ }
254
+
255
+ /*
256
+ * call-seq:
257
+ * calculate_confidence {|value| ... }
258
+ *
259
+ * Evalute each sample by given block, then return value set to confidence.
260
+ */
261
+ VALUE
262
+ rb_calculate_confidence(VALUE self)
263
+ {
264
+ VALUE value;
265
+ CvConDensation *cd = CVCONDENSATION(self);
266
+ if (rb_block_given_p()) {
267
+ try {
268
+ for (int i = 0; i < cd->SamplesNum; ++i) {
269
+ CvMat* mat = cvInitMatHeader(ALLOC(CvMat), cd->DP, 1, CV_MAKETYPE(CV_32F, 1), cd->flSamples[i]);
270
+ value = rb_yield(DEPEND_OBJECT(cCvMat::rb_class(), mat, self));
271
+ cd->flConfidence[i] = NUM2DBL(value);
272
+ }
273
+ }
274
+ catch (cv::Exception& e) {
275
+ raise_cverror(e);
276
+ }
277
+ }
278
+ return self;
279
+ }
280
+
281
+ __NAMESPACE_END_CVCONDENSATION
282
+ __NAMESPACE_END_OPENCV