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.
- data/History.txt +5 -0
- data/License.txt +30 -0
- data/Manifest.txt +115 -0
- data/README.txt +47 -0
- data/Rakefile +34 -0
- data/examples/convexhull.rb +41 -0
- data/examples/face_detect.rb +25 -0
- data/examples/houghcircle.rb +23 -0
- data/examples/inpaint.png +0 -0
- data/examples/inpaint.rb +43 -0
- data/examples/paint.rb +72 -0
- data/examples/snake.rb +43 -0
- data/examples/stuff.jpg +0 -0
- data/ext/curve.cpp +103 -0
- data/ext/curve.h +34 -0
- data/ext/cvavgcomp.cpp +67 -0
- data/ext/cvavgcomp.h +39 -0
- data/ext/cvbox2d.cpp +114 -0
- data/ext/cvbox2d.h +53 -0
- data/ext/cvcapture.cpp +276 -0
- data/ext/cvcapture.h +54 -0
- data/ext/cvchain.cpp +184 -0
- data/ext/cvchain.h +43 -0
- data/ext/cvchaincode.cpp +49 -0
- data/ext/cvchaincode.h +43 -0
- data/ext/cvcircle32f.cpp +90 -0
- data/ext/cvcircle32f.h +53 -0
- data/ext/cvcondensation.cpp +230 -0
- data/ext/cvcondensation.h +49 -0
- data/ext/cvconnectedcomp.cpp +115 -0
- data/ext/cvconnectedcomp.h +46 -0
- data/ext/cvcontour.cpp +219 -0
- data/ext/cvcontour.h +47 -0
- data/ext/cvcontourtree.cpp +86 -0
- data/ext/cvcontourtree.h +41 -0
- data/ext/cvconvexitydefect.cpp +103 -0
- data/ext/cvconvexitydefect.h +42 -0
- data/ext/cverror.cpp +140 -0
- data/ext/cverror.h +79 -0
- data/ext/cvfont.cpp +173 -0
- data/ext/cvfont.h +56 -0
- data/ext/cvhaarclassifiercascade.cpp +159 -0
- data/ext/cvhaarclassifiercascade.h +41 -0
- data/ext/cvhistogram.cpp +200 -0
- data/ext/cvhistogram.h +51 -0
- data/ext/cvindex.cpp +73 -0
- data/ext/cvindex.h +40 -0
- data/ext/cvline.cpp +106 -0
- data/ext/cvline.h +52 -0
- data/ext/cvmat.cpp +4809 -0
- data/ext/cvmat.h +286 -0
- data/ext/cvmatnd.cpp +44 -0
- data/ext/cvmatnd.h +28 -0
- data/ext/cvmemstorage.cpp +64 -0
- data/ext/cvmemstorage.h +53 -0
- data/ext/cvmoments.cpp +204 -0
- data/ext/cvmoments.h +48 -0
- data/ext/cvpoint.cpp +229 -0
- data/ext/cvpoint.h +59 -0
- data/ext/cvpoint2d32f.cpp +213 -0
- data/ext/cvpoint2d32f.h +61 -0
- data/ext/cvpoint3d32f.cpp +245 -0
- data/ext/cvpoint3d32f.h +64 -0
- data/ext/cvrect.cpp +340 -0
- data/ext/cvrect.h +79 -0
- data/ext/cvscalar.cpp +227 -0
- data/ext/cvscalar.h +63 -0
- data/ext/cvseq.cpp +583 -0
- data/ext/cvseq.h +71 -0
- data/ext/cvset.cpp +63 -0
- data/ext/cvset.h +39 -0
- data/ext/cvsize.cpp +223 -0
- data/ext/cvsize.h +63 -0
- data/ext/cvsize2d32f.cpp +180 -0
- data/ext/cvsize2d32f.h +59 -0
- data/ext/cvslice.cpp +82 -0
- data/ext/cvslice.h +53 -0
- data/ext/cvsparsemat.cpp +44 -0
- data/ext/cvsparsemat.h +28 -0
- data/ext/cvtermcriteria.cpp +183 -0
- data/ext/cvtermcriteria.h +71 -0
- data/ext/cvtwopoints.cpp +98 -0
- data/ext/cvtwopoints.h +50 -0
- data/ext/cvvector.cpp +206 -0
- data/ext/cvvector.h +54 -0
- data/ext/cvvideowriter.cpp +116 -0
- data/ext/cvvideowriter.h +41 -0
- data/ext/extconf.rb +61 -0
- data/ext/gui.cpp +65 -0
- data/ext/gui.h +33 -0
- data/ext/iplconvkernel.cpp +177 -0
- data/ext/iplconvkernel.h +52 -0
- data/ext/iplimage.cpp +238 -0
- data/ext/iplimage.h +54 -0
- data/ext/mouseevent.cpp +184 -0
- data/ext/mouseevent.h +59 -0
- data/ext/opencv.cpp +481 -0
- data/ext/opencv.h +356 -0
- data/ext/point3dset.cpp +41 -0
- data/ext/point3dset.h +31 -0
- data/ext/pointset.cpp +238 -0
- data/ext/pointset.h +69 -0
- data/ext/trackbar.cpp +122 -0
- data/ext/trackbar.h +65 -0
- data/ext/window.cpp +368 -0
- data/ext/window.h +56 -0
- data/images/CvMat_sobel.png +0 -0
- data/images/CvMat_sub_rect.png +0 -0
- data/images/CvSeq_relationmap.png +0 -0
- data/images/face_detect_from_lena.jpg +0 -0
- data/lib/opencv.rb +3 -0
- data/lib/version.rb +3 -0
- data/setup/setup.cygwin.rb +120 -0
- data/setup/setup.mingw.rb +99 -0
- data/setup/setup.mswin32.rb +103 -0
- data/test/test_opencv.rb +4 -0
- metadata +191 -0
data/ext/cvchain.h
ADDED
@@ -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
|
data/ext/cvchaincode.cpp
ADDED
@@ -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
|
data/ext/cvchaincode.h
ADDED
@@ -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
|
data/ext/cvcircle32f.cpp
ADDED
@@ -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
|
data/ext/cvcircle32f.h
ADDED
@@ -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
|