ruby-opencv 0.0.11 → 0.0.12.pre
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.yardopts +3 -0
- data/Gemfile +1 -0
- data/Manifest.txt +2 -14
- data/README.md +1 -1
- data/Rakefile +10 -1
- data/examples/facerec/facerec_lbph.rb +1 -1
- data/ext/opencv/algorithm.cpp +6 -1
- data/ext/opencv/algorithm.h +1 -1
- data/ext/opencv/curve.cpp +48 -33
- data/ext/opencv/curve.h +1 -1
- data/ext/opencv/cvavgcomp.cpp +22 -25
- data/ext/opencv/cvavgcomp.h +1 -1
- data/ext/opencv/cvbox2d.cpp +56 -58
- data/ext/opencv/cvbox2d.h +1 -1
- data/ext/opencv/cvcapture.cpp +210 -109
- data/ext/opencv/cvcapture.h +1 -1
- data/ext/opencv/cvchain.cpp +71 -71
- data/ext/opencv/cvchain.h +1 -1
- data/ext/opencv/cvcircle32f.cpp +37 -27
- data/ext/opencv/cvcircle32f.h +1 -1
- data/ext/opencv/cvconnectedcomp.cpp +49 -36
- data/ext/opencv/cvconnectedcomp.h +1 -1
- data/ext/opencv/cvcontour.cpp +117 -81
- data/ext/opencv/cvcontour.h +1 -1
- data/ext/opencv/cvcontourtree.cpp +37 -32
- data/ext/opencv/cvcontourtree.h +1 -1
- data/ext/opencv/cvconvexitydefect.cpp +33 -44
- data/ext/opencv/cvconvexitydefect.h +1 -1
- data/ext/opencv/cverror.cpp +22 -66
- data/ext/opencv/cverror.h +1 -1
- data/ext/opencv/cvfeaturetree.cpp +31 -33
- data/ext/opencv/cvfeaturetree.h +1 -1
- data/ext/opencv/cvfont.cpp +98 -78
- data/ext/opencv/cvfont.h +1 -1
- data/ext/opencv/cvhaarclassifiercascade.cpp +39 -59
- data/ext/opencv/cvhaarclassifiercascade.h +1 -1
- data/ext/opencv/cvhistogram.cpp +259 -90
- data/ext/opencv/cvhistogram.h +1 -1
- data/ext/opencv/cvhumoments.cpp +99 -60
- data/ext/opencv/cvhumoments.h +1 -1
- data/ext/opencv/cvline.cpp +45 -40
- data/ext/opencv/cvline.h +1 -1
- data/ext/opencv/cvmat.cpp +1894 -1829
- data/ext/opencv/cvmat.h +2 -3
- data/ext/opencv/cvmemstorage.cpp +19 -14
- data/ext/opencv/cvmemstorage.h +1 -1
- data/ext/opencv/cvmoments.cpp +51 -45
- data/ext/opencv/cvmoments.h +1 -1
- data/ext/opencv/cvpoint.cpp +32 -26
- data/ext/opencv/cvpoint.h +1 -1
- data/ext/opencv/cvpoint2d32f.cpp +31 -26
- data/ext/opencv/cvpoint2d32f.h +1 -1
- data/ext/opencv/cvpoint3d32f.cpp +36 -29
- data/ext/opencv/cvpoint3d32f.h +1 -1
- data/ext/opencv/cvrect.cpp +38 -33
- data/ext/opencv/cvrect.h +1 -1
- data/ext/opencv/cvscalar.cpp +50 -45
- data/ext/opencv/cvscalar.h +1 -1
- data/ext/opencv/cvseq.cpp +53 -47
- data/ext/opencv/cvseq.h +1 -1
- data/ext/opencv/cvsize.cpp +32 -26
- data/ext/opencv/cvsize.h +1 -1
- data/ext/opencv/cvsize2d32f.cpp +31 -25
- data/ext/opencv/cvsize2d32f.h +1 -1
- data/ext/opencv/cvslice.cpp +28 -22
- data/ext/opencv/cvslice.h +1 -1
- data/ext/opencv/cvsurfparams.cpp +37 -28
- data/ext/opencv/cvsurfparams.h +1 -1
- data/ext/opencv/cvsurfpoint.cpp +76 -53
- data/ext/opencv/cvsurfpoint.h +1 -1
- data/ext/opencv/cvtermcriteria.cpp +32 -26
- data/ext/opencv/cvtermcriteria.h +1 -1
- data/ext/opencv/cvtwopoints.cpp +28 -22
- data/ext/opencv/cvtwopoints.h +1 -1
- data/ext/opencv/cvvideowriter.cpp +25 -20
- data/ext/opencv/cvvideowriter.h +1 -1
- data/ext/opencv/eigenfaces.cpp +10 -2
- data/ext/opencv/eigenfaces.h +1 -1
- data/ext/opencv/facerecognizer.cpp +15 -8
- data/ext/opencv/facerecognizer.h +2 -2
- data/ext/opencv/fisherfaces.cpp +10 -2
- data/ext/opencv/fisherfaces.h +1 -1
- data/ext/opencv/gui.cpp +26 -23
- data/ext/opencv/gui.h +1 -1
- data/ext/opencv/iplconvkernel.cpp +30 -24
- data/ext/opencv/iplconvkernel.h +1 -1
- data/ext/opencv/iplimage.cpp +49 -42
- data/ext/opencv/iplimage.h +1 -1
- data/ext/opencv/lbph.cpp +10 -2
- data/ext/opencv/lbph.h +1 -1
- data/ext/opencv/mouseevent.cpp +30 -25
- data/ext/opencv/mouseevent.h +1 -1
- data/ext/opencv/opencv.cpp +59 -60
- data/ext/opencv/opencv.h +1 -5
- data/ext/opencv/pointset.cpp +31 -25
- data/ext/opencv/pointset.h +1 -1
- data/ext/opencv/trackbar.cpp +27 -21
- data/ext/opencv/trackbar.h +1 -1
- data/ext/opencv/window.cpp +77 -57
- data/ext/opencv/window.h +1 -1
- data/lib/opencv/version.rb +2 -1
- data/ruby-opencv.gemspec +19 -18
- data/test/test_opencv.rb +5 -3
- data/yard_extension.rb +5 -0
- metadata +13 -27
- data/examples/matching_to_many_images/matching_to_many_images.rb +0 -16
- data/examples/matching_to_many_images/query.png +0 -0
- data/examples/matching_to_many_images/train/1.png +0 -0
- data/examples/matching_to_many_images/train/2.png +0 -0
- data/examples/matching_to_many_images/train/3.png +0 -0
- data/examples/matching_to_many_images/train/trainImages.txt +0 -3
- data/ext/opencv/cvcondensation.cpp +0 -282
- data/ext/opencv/cvcondensation.h +0 -49
- data/ext/opencv/cvmatnd.cpp +0 -44
- data/ext/opencv/cvmatnd.h +0 -28
- data/ext/opencv/cvsparsemat.cpp +0 -44
- data/ext/opencv/cvsparsemat.h +0 -28
- data/images/face_detect_from_lena.jpg +0 -0
- data/test/test_cvmat_matching.rb +0 -57
data/ext/opencv/cvfont.h
CHANGED
|
@@ -11,11 +11,7 @@
|
|
|
11
11
|
/*
|
|
12
12
|
* Document-class: OpenCV::CvHaarClassifierCascade
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
* This detector can discover object (e.g. human's face) from image.
|
|
16
|
-
*
|
|
17
|
-
* Find face-area from picture "lena"...
|
|
18
|
-
* link:../images/face_detect_from_lena.jpg
|
|
14
|
+
* Haar Feature-based Cascade Classifier for Object Detection
|
|
19
15
|
*/
|
|
20
16
|
__NAMESPACE_BEGIN_OPENCV
|
|
21
17
|
__NAMESPACE_BEGIN_CVHAARCLASSIFERCASCADE
|
|
@@ -28,23 +24,6 @@ rb_class()
|
|
|
28
24
|
return rb_klass;
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
void define_ruby_class()
|
|
32
|
-
{
|
|
33
|
-
if (rb_klass)
|
|
34
|
-
return;
|
|
35
|
-
/*
|
|
36
|
-
* opencv = rb_define_module("OpenCV");
|
|
37
|
-
*
|
|
38
|
-
* note: this comment is used by rdoc.
|
|
39
|
-
*/
|
|
40
|
-
VALUE opencv = rb_module_opencv();
|
|
41
|
-
|
|
42
|
-
rb_klass = rb_define_class_under(opencv, "CvHaarClassifierCascade", rb_cObject);
|
|
43
|
-
rb_define_alloc_func(rb_klass, rb_allocate);
|
|
44
|
-
rb_define_singleton_method(rb_klass, "load", RUBY_METHOD_FUNC(rb_load), 1);
|
|
45
|
-
rb_define_method(rb_klass, "detect_objects", RUBY_METHOD_FUNC(rb_detect_objects), -1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
27
|
VALUE
|
|
49
28
|
rb_allocate(VALUE klass)
|
|
50
29
|
{
|
|
@@ -61,18 +40,13 @@ cvhaarclassifiercascade_free(void* ptr)
|
|
|
61
40
|
}
|
|
62
41
|
|
|
63
42
|
/*
|
|
64
|
-
* call-seq:
|
|
65
|
-
* CvHaarClassiferCascade.load(<i>path</i>) -> object-detector
|
|
66
|
-
*
|
|
67
43
|
* Load trained cascade of haar classifers from file.
|
|
68
|
-
* Object detection classifiers are stored in XML or YAML files.
|
|
69
|
-
* sample of object detection classifier files is included by OpenCV.
|
|
70
|
-
*
|
|
71
|
-
* You can found these at
|
|
72
|
-
* C:\Program Files\OpenCV\data\haarcascades\*.xml (Windows, default install path)
|
|
73
44
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
45
|
+
* @overload load(filename)
|
|
46
|
+
* @param filename [String] Haar classifer file name
|
|
47
|
+
* @return [CvHaarClassifierCascade] Object detector
|
|
48
|
+
* @scope class
|
|
49
|
+
* @opencv_func cvLoad
|
|
76
50
|
*/
|
|
77
51
|
VALUE
|
|
78
52
|
rb_load(VALUE klass, VALUE path)
|
|
@@ -90,35 +64,23 @@ rb_load(VALUE klass, VALUE path)
|
|
|
90
64
|
}
|
|
91
65
|
|
|
92
66
|
/*
|
|
93
|
-
*
|
|
94
|
-
* detect_objects(image[, options]) -> cvseq(include CvAvgComp object)
|
|
95
|
-
* detect_objects(image[, options]){|cmp| ... } -> cvseq(include CvAvgComp object)
|
|
96
|
-
*
|
|
97
|
-
* Detects objects in the image. This method finds rectangular regions in the
|
|
98
|
-
* given image that are likely to contain objects the cascade has been trained
|
|
99
|
-
* for and return those regions as a sequence of rectangles.
|
|
67
|
+
* Detects objects of different sizes in the input image.
|
|
100
68
|
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
69
|
+
* @overload detect_objects(image, options = nil)
|
|
70
|
+
* @param image [CvMat,IplImage] Matrix of the type CV_8U containing an image where objects are detected.
|
|
71
|
+
* @param options [Hash] Options
|
|
72
|
+
* @option options [Number] :scale_factor
|
|
73
|
+
* Parameter specifying how much the image size is reduced at each image scale.
|
|
74
|
+
* @option options [Number] :storage
|
|
106
75
|
* Memory storage to store the resultant sequence of the object candidate rectangles
|
|
107
|
-
* :
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* If min_neighbors is 0, the function does not any grouping at all and returns all the detected
|
|
116
|
-
* candidate rectangles, whitch many be useful if the user wants to apply a customized grouping procedure.
|
|
117
|
-
* :min_size
|
|
118
|
-
* Minimum window size. By default, it is set to size of samples the classifier has been
|
|
119
|
-
* trained on (~20x20 for face detection).
|
|
120
|
-
* :max_size
|
|
121
|
-
* aximum window size to use. By default, it is set to the size of the image.
|
|
76
|
+
* @option options [Number] :min_neighbors
|
|
77
|
+
* Parameter specifying how many neighbors each candidate rectangle should have to retain it.
|
|
78
|
+
* @option options [CvSize] :min_size
|
|
79
|
+
* Minimum possible object size. Objects smaller than that are ignored.
|
|
80
|
+
* @option options [CvSize] :max_size
|
|
81
|
+
* Maximum possible object size. Objects larger than that are ignored.
|
|
82
|
+
* @return [CvSeq<CvAvgComp>] Detected objects as a list of rectangles
|
|
83
|
+
* @opencv_func cvHaarDetectObjects
|
|
122
84
|
*/
|
|
123
85
|
VALUE
|
|
124
86
|
rb_detect_objects(int argc, VALUE *argv, VALUE self)
|
|
@@ -164,5 +126,23 @@ rb_detect_objects(int argc, VALUE *argv, VALUE self)
|
|
|
164
126
|
return result;
|
|
165
127
|
}
|
|
166
128
|
|
|
129
|
+
void
|
|
130
|
+
init_ruby_class()
|
|
131
|
+
{
|
|
132
|
+
#if 0
|
|
133
|
+
// For documentation using YARD
|
|
134
|
+
VALUE opencv = rb_define_module("OpenCV");
|
|
135
|
+
#endif
|
|
136
|
+
|
|
137
|
+
if (rb_klass)
|
|
138
|
+
return;
|
|
139
|
+
|
|
140
|
+
VALUE opencv = rb_module_opencv();
|
|
141
|
+
rb_klass = rb_define_class_under(opencv, "CvHaarClassifierCascade", rb_cObject);
|
|
142
|
+
rb_define_alloc_func(rb_klass, rb_allocate);
|
|
143
|
+
rb_define_singleton_method(rb_klass, "load", RUBY_METHOD_FUNC(rb_load), 1);
|
|
144
|
+
rb_define_method(rb_klass, "detect_objects", RUBY_METHOD_FUNC(rb_detect_objects), -1);
|
|
145
|
+
}
|
|
146
|
+
|
|
167
147
|
__NAMESPACE_END_CVHAARCLASSIFERCASCADE
|
|
168
148
|
__NAMESPACE_END_OPENCV
|
data/ext/opencv/cvhistogram.cpp
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
/*
|
|
12
12
|
* Document-class: OpenCV::CvHistogram
|
|
13
13
|
*
|
|
14
|
-
*
|
|
14
|
+
* Multi-dimensional histogram.
|
|
15
15
|
*/
|
|
16
16
|
__NAMESPACE_BEGIN_OPENCV
|
|
17
17
|
__NAMESPACE_BEGIN_CVHISTOGRAM
|
|
@@ -24,57 +24,6 @@ rb_class()
|
|
|
24
24
|
return rb_klass;
|
|
25
25
|
}
|
|
26
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
|
-
rb_klass = rb_define_class_under(opencv, "CvHistogram", rb_cObject);
|
|
39
|
-
|
|
40
|
-
rb_define_alloc_func(rb_klass, rb_allocate);
|
|
41
|
-
rb_define_private_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
|
|
42
|
-
rb_define_method(rb_klass, "is_uniform?", RUBY_METHOD_FUNC(rb_is_uniform), 0);
|
|
43
|
-
rb_define_method(rb_klass, "is_sparse?", RUBY_METHOD_FUNC(rb_is_sparse), 0);
|
|
44
|
-
rb_define_method(rb_klass, "has_range?", RUBY_METHOD_FUNC(rb_has_range), 0);
|
|
45
|
-
rb_define_method(rb_klass, "dims", RUBY_METHOD_FUNC(rb_dims), 0);
|
|
46
|
-
rb_define_method(rb_klass, "calc_hist", RUBY_METHOD_FUNC(rb_calc_hist), -1);
|
|
47
|
-
rb_define_method(rb_klass, "calc_hist!", RUBY_METHOD_FUNC(rb_calc_hist_bang), -1);
|
|
48
|
-
rb_define_method(rb_klass, "[]", RUBY_METHOD_FUNC(rb_aref), -2);
|
|
49
|
-
rb_define_alias(rb_klass, "query_hist_value", "[]");
|
|
50
|
-
rb_define_method(rb_klass, "min_max_value", RUBY_METHOD_FUNC(rb_min_max_value), 0);
|
|
51
|
-
rb_define_method(rb_klass, "copy_hist", RUBY_METHOD_FUNC(rb_copy_hist), 0);
|
|
52
|
-
|
|
53
|
-
rb_define_method(rb_klass, "clear_hist", RUBY_METHOD_FUNC(rb_clear_hist), 0);
|
|
54
|
-
rb_define_alias(rb_klass, "clear", "clear_hist");
|
|
55
|
-
rb_define_method(rb_klass, "clear_hist!", RUBY_METHOD_FUNC(rb_clear_hist_bang), 0);
|
|
56
|
-
rb_define_alias(rb_klass, "clear!", "clear_hist!");
|
|
57
|
-
|
|
58
|
-
rb_define_method(rb_klass, "normalize_hist", RUBY_METHOD_FUNC(rb_normalize_hist), 1);
|
|
59
|
-
rb_define_alias(rb_klass, "normalize", "normalize_hist");
|
|
60
|
-
rb_define_method(rb_klass, "normalize_hist!", RUBY_METHOD_FUNC(rb_normalize_hist_bang), 1);
|
|
61
|
-
rb_define_alias(rb_klass, "normalize!", "normalize_hist!");
|
|
62
|
-
|
|
63
|
-
rb_define_method(rb_klass, "thresh_hist", RUBY_METHOD_FUNC(rb_thresh_hist), 1);
|
|
64
|
-
rb_define_alias(rb_klass, "thresh", "thresh_hist");
|
|
65
|
-
rb_define_method(rb_klass, "thresh_hist!", RUBY_METHOD_FUNC(rb_thresh_hist_bang), 1);
|
|
66
|
-
rb_define_alias(rb_klass, "thresh!", "thresh_hist!");
|
|
67
|
-
|
|
68
|
-
rb_define_method(rb_klass, "set_hist_bin_ranges", RUBY_METHOD_FUNC(rb_set_hist_bin_ranges), -1);
|
|
69
|
-
rb_define_method(rb_klass, "set_hist_bin_ranges!", RUBY_METHOD_FUNC(rb_set_hist_bin_ranges_bang), -1);
|
|
70
|
-
|
|
71
|
-
rb_define_method(rb_klass, "calc_back_project", RUBY_METHOD_FUNC(rb_calc_back_project), 1);
|
|
72
|
-
rb_define_method(rb_klass, "calc_back_project_patch", RUBY_METHOD_FUNC(rb_calc_back_project_patch), 4);
|
|
73
|
-
|
|
74
|
-
rb_define_singleton_method(rb_klass, "calc_prob_density", RUBY_METHOD_FUNC(rb_calc_prob_density), -1);
|
|
75
|
-
rb_define_singleton_method(rb_klass, "compare_hist", RUBY_METHOD_FUNC(rb_compare_hist), 3);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
27
|
void
|
|
79
28
|
release_hist(void* ptr)
|
|
80
29
|
{
|
|
@@ -119,6 +68,23 @@ ary2intptr(VALUE ary, int* buff)
|
|
|
119
68
|
return buff;
|
|
120
69
|
}
|
|
121
70
|
|
|
71
|
+
/*
|
|
72
|
+
* Creates a histogram
|
|
73
|
+
* @overload new(dims, sizes, type, ranges=nil, uniform=true)
|
|
74
|
+
* @param dims [Integer] Number of histogram dimensions
|
|
75
|
+
* @param sizes [Array<Integer>] Array of the histogram dimension sizes
|
|
76
|
+
* @param type [Integer]
|
|
77
|
+
* Histogram representation format. CV_HIST_ARRAY means that the histogram data is represented
|
|
78
|
+
* as a multi-dimensional dense array CvMatND. CV_HIST_SPARSE means that histogram data is
|
|
79
|
+
* represented as a multi-dimensional sparse array CvSparseMat.
|
|
80
|
+
* @param ranges [Array<Integer>]
|
|
81
|
+
* Array of ranges for the histogram bins. Its meaning depends on the uniform parameter value.
|
|
82
|
+
* The ranges are used when the histogram is calculated or backprojected to determine which
|
|
83
|
+
* histogram bin corresponds to which value/tuple of values from the input image(s).
|
|
84
|
+
* @param uniform [Boolean] Uniformity flag.
|
|
85
|
+
* @return [CvHistogram] Histogram
|
|
86
|
+
* @opencv_func cvCreateHist
|
|
87
|
+
*/
|
|
122
88
|
VALUE
|
|
123
89
|
rb_initialize(int argc, VALUE *argv, VALUE self)
|
|
124
90
|
{
|
|
@@ -157,9 +123,10 @@ rb_initialize(int argc, VALUE *argv, VALUE self)
|
|
|
157
123
|
}
|
|
158
124
|
|
|
159
125
|
/*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
126
|
+
* Returns <tt>self</tt> is uniform histogram or not
|
|
127
|
+
* @overload is_uniform?
|
|
128
|
+
* @return [Boolean] Uniform or not
|
|
129
|
+
* @opencv_func CV_IS_UNIFORM_HIST
|
|
163
130
|
*/
|
|
164
131
|
VALUE
|
|
165
132
|
rb_is_uniform(VALUE self)
|
|
@@ -168,9 +135,10 @@ rb_is_uniform(VALUE self)
|
|
|
168
135
|
}
|
|
169
136
|
|
|
170
137
|
/*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
138
|
+
* Returns <tt>self</tt> is sparse histogram or not
|
|
139
|
+
* @overload is_sparse?
|
|
140
|
+
* @return [Boolean] Sparse or not
|
|
141
|
+
* @opencv_func CV_IS_SPARSE_HIST
|
|
174
142
|
*/
|
|
175
143
|
VALUE
|
|
176
144
|
rb_is_sparse(VALUE self)
|
|
@@ -179,21 +147,45 @@ rb_is_sparse(VALUE self)
|
|
|
179
147
|
}
|
|
180
148
|
|
|
181
149
|
/*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
|
|
150
|
+
* Returns <tt>self</tt> has range or not
|
|
151
|
+
* @overload has_range?
|
|
152
|
+
* @return [Boolean] Has range or not
|
|
153
|
+
* @opencv_func CV_HIST_HAS_RANGES
|
|
154
|
+
*/
|
|
185
155
|
VALUE
|
|
186
156
|
rb_has_range(VALUE self)
|
|
187
157
|
{
|
|
188
158
|
return CV_HIST_HAS_RANGES(CVHISTOGRAM(self)) ? Qtrue : Qfalse;
|
|
189
159
|
}
|
|
190
160
|
|
|
161
|
+
/*
|
|
162
|
+
* Calculates a histogram of a set of arrays.
|
|
163
|
+
* @overload calc_hist(images, accumulate=nil, mask=nil)
|
|
164
|
+
* @param images [Array<IplImage>]
|
|
165
|
+
* Source arrays. They all should have the same depth, CV_8U or CV_32F, and the same size.
|
|
166
|
+
* Each of them can have an arbitrary number of channels.
|
|
167
|
+
* @param accumulate [Boolean]
|
|
168
|
+
* Accumulation flag. If it is set, the histogram is not cleared in the beginning when it is allocated.
|
|
169
|
+
* This feature enables you to compute a single histogram from several sets of arrays,
|
|
170
|
+
* or to update the histogram in time.
|
|
171
|
+
* @param mask [CvMat]
|
|
172
|
+
* Optional mask. If the matrix is not empty, it must be an 8-bit array of the same size as images[i].
|
|
173
|
+
* The non-zero mask elements mark the array elements counted in the histogram.
|
|
174
|
+
* @return [CvHistogram] Histogram of a set of arrays
|
|
175
|
+
* @opencv_func cvCalcHist
|
|
176
|
+
*/
|
|
191
177
|
VALUE
|
|
192
178
|
rb_calc_hist(int argc, VALUE* argv, VALUE self)
|
|
193
179
|
{
|
|
194
180
|
return rb_calc_hist_bang(argc, argv, rb_copy_hist(self));
|
|
195
181
|
}
|
|
196
182
|
|
|
183
|
+
/*
|
|
184
|
+
* Calculates a histogram of a set of arrays.
|
|
185
|
+
* @overload calc_hist!(images, accumulate=nil, mask=nil)
|
|
186
|
+
* @see #calc_hist
|
|
187
|
+
* @opencv_func cvCalcHist
|
|
188
|
+
*/
|
|
197
189
|
VALUE
|
|
198
190
|
rb_calc_hist_bang(int argc, VALUE* argv, VALUE self)
|
|
199
191
|
{
|
|
@@ -218,8 +210,17 @@ rb_calc_hist_bang(int argc, VALUE* argv, VALUE self)
|
|
|
218
210
|
}
|
|
219
211
|
|
|
220
212
|
/*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
213
|
+
* Queries the value of the histogram bin.
|
|
214
|
+
* @overload [](idx0)
|
|
215
|
+
* @overload [](idx0, idx1)
|
|
216
|
+
* @overload [](idx0, idx1, idx2)
|
|
217
|
+
* @overload [](idx0, idx1, idx2, idx3, ...)
|
|
218
|
+
* @param idx* [Integer] *-th index
|
|
219
|
+
* @return [Number] The value of the specified bin of the 1D, 2D, 3D, or N-D histogram.
|
|
220
|
+
* @opencv_func cvQueryHistValue_1D
|
|
221
|
+
* @opencv_func cvQueryHistValue_2D
|
|
222
|
+
* @opencv_func cvQueryHistValue_3D
|
|
223
|
+
* @opencv_func cvQueryHistValue_nD
|
|
223
224
|
*/
|
|
224
225
|
VALUE
|
|
225
226
|
rb_aref(VALUE self, VALUE args)
|
|
@@ -256,6 +257,18 @@ rb_aref(VALUE self, VALUE args)
|
|
|
256
257
|
return rb_float_new((double)value);
|
|
257
258
|
}
|
|
258
259
|
|
|
260
|
+
/*
|
|
261
|
+
* Finds the minimum and maximum histogram bins.
|
|
262
|
+
* @overload min_max_value
|
|
263
|
+
* @return [Array]
|
|
264
|
+
* [min_value, max_value, min_idx, max_idx]: Array of the minimum / maximum value of the histogram
|
|
265
|
+
* and their coordinates.
|
|
266
|
+
* - min_value: The minimum value of the histogram.
|
|
267
|
+
* - max_value: The maximum value of the histogram.
|
|
268
|
+
* - min_idx: The array of coordinates for the minimum.
|
|
269
|
+
* - max_idx: The array of coordinates for the maximum.
|
|
270
|
+
* @opencv_func cvGetMinMaxHistValue
|
|
271
|
+
*/
|
|
259
272
|
VALUE
|
|
260
273
|
rb_min_max_value(VALUE self)
|
|
261
274
|
{
|
|
@@ -286,8 +299,16 @@ rb_min_max_value(VALUE self)
|
|
|
286
299
|
}
|
|
287
300
|
|
|
288
301
|
/*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
302
|
+
* Returns number of array dimensions
|
|
303
|
+
* @overload [](idx0, idx1, ...)
|
|
304
|
+
* @param idx* [Integer] *-th index
|
|
305
|
+
* @return [Array<Integer, Array<Integer>>]
|
|
306
|
+
* [dims, sizes]: Number of array dimensions and its sizes.
|
|
307
|
+
* - dims (Integer): Number of array dimensions
|
|
308
|
+
* - sizes (Array<Integer>): Vector of the array dimension sizes.
|
|
309
|
+
* For 2D arrays the number of rows (height) goes first,
|
|
310
|
+
* number of columns (width) next.
|
|
311
|
+
* @opencv_func cvGetDims
|
|
291
312
|
*/
|
|
292
313
|
VALUE
|
|
293
314
|
rb_dims(VALUE self)
|
|
@@ -309,10 +330,10 @@ rb_dims(VALUE self)
|
|
|
309
330
|
}
|
|
310
331
|
|
|
311
332
|
/*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
*
|
|
315
|
-
*
|
|
333
|
+
* Clones histogram
|
|
334
|
+
* @overload copy_hist
|
|
335
|
+
* @return [CvHistogram] Copy of the histogram
|
|
336
|
+
* @opencv_func cvCopyHist
|
|
316
337
|
*/
|
|
317
338
|
VALUE
|
|
318
339
|
rb_copy_hist(VALUE self)
|
|
@@ -328,8 +349,11 @@ rb_copy_hist(VALUE self)
|
|
|
328
349
|
}
|
|
329
350
|
|
|
330
351
|
/*
|
|
331
|
-
*
|
|
332
|
-
*
|
|
352
|
+
* Sets all histogram bins to 0 in case of dense histogram
|
|
353
|
+
* and removes all histogram bins in case of sparse array.
|
|
354
|
+
* @overload clear_hist
|
|
355
|
+
* @return [CvHistogram] Cleared histogram
|
|
356
|
+
* @opencv_func cvClearHist
|
|
333
357
|
*/
|
|
334
358
|
VALUE
|
|
335
359
|
rb_clear_hist(VALUE self)
|
|
@@ -338,10 +362,13 @@ rb_clear_hist(VALUE self)
|
|
|
338
362
|
}
|
|
339
363
|
|
|
340
364
|
/*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
*
|
|
365
|
+
* Sets all histogram bins to 0 in case of dense histogram
|
|
366
|
+
* and removes all histogram bins in case of sparse array.
|
|
367
|
+
* This method changes <tt>self</tt>.
|
|
368
|
+
* @overload clear_hist!
|
|
369
|
+
* @see #clear_hist
|
|
370
|
+
* @return [CvHistogram] Cleared histogram
|
|
371
|
+
* @opencv_func cvClearHist
|
|
345
372
|
*/
|
|
346
373
|
VALUE
|
|
347
374
|
rb_clear_hist_bang(VALUE self)
|
|
@@ -356,10 +383,12 @@ rb_clear_hist_bang(VALUE self)
|
|
|
356
383
|
}
|
|
357
384
|
|
|
358
385
|
/*
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
386
|
+
* Returns normalized the histogram bins by scaling them,
|
|
387
|
+
* such that the sum of the bins becomes equal to <tt>factor</tt>.
|
|
388
|
+
* @overload normalize(factor)
|
|
389
|
+
* @param factor [Number] Normalization factor. The sum of the bins becomes equal to this value.
|
|
390
|
+
* @return [CvHistogram] Normalized histogram
|
|
391
|
+
* @opencv_func cvNormalizeHist
|
|
363
392
|
*/
|
|
364
393
|
VALUE
|
|
365
394
|
rb_normalize_hist(VALUE self, VALUE factor)
|
|
@@ -368,10 +397,14 @@ rb_normalize_hist(VALUE self, VALUE factor)
|
|
|
368
397
|
}
|
|
369
398
|
|
|
370
399
|
/*
|
|
371
|
-
*
|
|
372
|
-
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
400
|
+
* Returns normalized the histogram bins by scaling them,
|
|
401
|
+
* such that the sum of the bins becomes equal to <tt>factor</tt>.
|
|
402
|
+
* This method changes <tt>self</tt>.
|
|
403
|
+
* @overload normalize!(factor)
|
|
404
|
+
* @param factor [Number] Normalization factor. The sum of the bins becomes equal to this value.
|
|
405
|
+
* @return [CvHistogram] Normalized histogram
|
|
406
|
+
* @see #normalize
|
|
407
|
+
* @opencv_func cvNormalizeHist
|
|
375
408
|
*/
|
|
376
409
|
VALUE
|
|
377
410
|
rb_normalize_hist_bang(VALUE self, VALUE factor)
|
|
@@ -386,10 +419,11 @@ rb_normalize_hist_bang(VALUE self, VALUE factor)
|
|
|
386
419
|
}
|
|
387
420
|
|
|
388
421
|
/*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
422
|
+
* Returns cleared histogram bins that are below the specified threshold.
|
|
423
|
+
* @overload thresh_hist(threshold)
|
|
424
|
+
* @param threshold [Number] Threshold value
|
|
425
|
+
* @return [CvHistogram] Cleared histogram
|
|
426
|
+
* @opencv_func cvThreshHist
|
|
393
427
|
*/
|
|
394
428
|
VALUE
|
|
395
429
|
rb_thresh_hist(VALUE self, VALUE threshold)
|
|
@@ -398,10 +432,13 @@ rb_thresh_hist(VALUE self, VALUE threshold)
|
|
|
398
432
|
}
|
|
399
433
|
|
|
400
434
|
/*
|
|
401
|
-
* call-seq:
|
|
402
|
-
* thresh_hist!(<i>threshold</i>) -> self
|
|
403
|
-
*
|
|
404
435
|
* Cleares histogram bins that are below the specified threshold.
|
|
436
|
+
* This method changes <tt>self</tt>.
|
|
437
|
+
* @overload thresh_hist!(threshold)
|
|
438
|
+
* @param threshold [Number] Threshold value
|
|
439
|
+
* @return [CvHistogram] Cleared histogram
|
|
440
|
+
* @see #thresh_hist
|
|
441
|
+
* @opencv_func cvThreshHist
|
|
405
442
|
*/
|
|
406
443
|
VALUE
|
|
407
444
|
rb_thresh_hist_bang(VALUE self, VALUE threshold)
|
|
@@ -415,12 +452,39 @@ rb_thresh_hist_bang(VALUE self, VALUE threshold)
|
|
|
415
452
|
return self;
|
|
416
453
|
}
|
|
417
454
|
|
|
455
|
+
/*
|
|
456
|
+
* Sets the bounds of the histogram bins.
|
|
457
|
+
* @overload set_hist_bin_ranges(ranges, uniform=true)
|
|
458
|
+
* @param ranges [Array<Number>]
|
|
459
|
+
* Array of ranges for the histogram bins. Its meaning depends on the uniform parameter value.
|
|
460
|
+
* The ranges are used when the histogram is calculated or backprojected to determine
|
|
461
|
+
* which histogram bin corresponds to which value/tuple of values from the input image(s).
|
|
462
|
+
* @param uniform [Boolean]
|
|
463
|
+
* Uniformity flag.
|
|
464
|
+
* @return [CvHistogram]
|
|
465
|
+
* Histogram
|
|
466
|
+
* @opencv_func cvSetHistBinRanges
|
|
467
|
+
*/
|
|
418
468
|
VALUE
|
|
419
469
|
rb_set_hist_bin_ranges(int argc, VALUE* argv, VALUE self)
|
|
420
470
|
{
|
|
421
471
|
return rb_set_hist_bin_ranges_bang(argc, argv, rb_copy_hist(self));
|
|
422
472
|
}
|
|
423
473
|
|
|
474
|
+
/*
|
|
475
|
+
* Sets the bounds of the histogram bins. This method changes <tt>self</tt>.
|
|
476
|
+
* @overload set_hist_bin_ranges!(ranges, uniform=true)
|
|
477
|
+
* @param ranges [Array<Number>]
|
|
478
|
+
* Array of ranges for the histogram bins. Its meaning depends on the uniform parameter value.
|
|
479
|
+
* The ranges are used when the histogram is calculated or backprojected to determine
|
|
480
|
+
* which histogram bin corresponds to which value/tuple of values from the input image(s).
|
|
481
|
+
* @param uniform [Boolean]
|
|
482
|
+
* Uniformity flag.
|
|
483
|
+
* @return [CvHistogram]
|
|
484
|
+
* Histogram
|
|
485
|
+
* @see #set_hist_bin_ranges
|
|
486
|
+
* @opencv_func cvSetHistBinRanges
|
|
487
|
+
*/
|
|
424
488
|
VALUE
|
|
425
489
|
rb_set_hist_bin_ranges_bang(int argc, VALUE* argv, VALUE self)
|
|
426
490
|
{
|
|
@@ -446,6 +510,17 @@ rb_set_hist_bin_ranges_bang(int argc, VALUE* argv, VALUE self)
|
|
|
446
510
|
return self;
|
|
447
511
|
}
|
|
448
512
|
|
|
513
|
+
/*
|
|
514
|
+
* Calculates the back projection of a histogram.
|
|
515
|
+
* @overload calc_back_project(images)
|
|
516
|
+
* @param images [Array<IplImage>]
|
|
517
|
+
* Source arrays. They all should have the same depth, CV_8U or CV_32F, and the same size.
|
|
518
|
+
* Each of them can have an arbitrary number of channels.
|
|
519
|
+
* @return [CvMat,IplImage]
|
|
520
|
+
* Destination back projection array that is a single-channel array of the same size and depth
|
|
521
|
+
* as the first element of <tt>images</tt>
|
|
522
|
+
* @opencv_func cvCalcBackProject
|
|
523
|
+
*/
|
|
449
524
|
VALUE
|
|
450
525
|
rb_calc_back_project(VALUE self, VALUE image)
|
|
451
526
|
{
|
|
@@ -475,6 +550,24 @@ rb_calc_back_project(VALUE self, VALUE image)
|
|
|
475
550
|
return back_project;
|
|
476
551
|
}
|
|
477
552
|
|
|
553
|
+
/*
|
|
554
|
+
* Locates a template within an image by using a histogram comparison.
|
|
555
|
+
* @overload calc_back_project_patch(images, patch_size, method, factor)
|
|
556
|
+
* @param images [Array<IplImage>] Source arrays.
|
|
557
|
+
* @param pach_size [CvSize] Size of the patch slid though the source image.
|
|
558
|
+
* @param method [Integer]
|
|
559
|
+
* Comparison method that could be one of the following:
|
|
560
|
+
* - <tt>CV_COMP_CORREL</tt>: Correlation
|
|
561
|
+
* - <tt>CV_COMP_CHISQR</tt>: Chi-Square
|
|
562
|
+
* - <tt>CV_COMP_INTERSECT</tt>: Intersection
|
|
563
|
+
* - <tt>CV_COMP_BHATTACHARYYA</tt>: Bhattacharyya distance
|
|
564
|
+
* - <tt>CV_COMP_HELLINGER</tt>: Synonym for <tt>CV_COMP_BHATTACHARYYA</tt>
|
|
565
|
+
* @param factor [Number]
|
|
566
|
+
* Normalization factor for histograms that affects the normalization scale
|
|
567
|
+
* of the destination image. Pass 1 if not sure.
|
|
568
|
+
* @return [CvMat,IplImage] Destination image.
|
|
569
|
+
* @opencv_func cvCalcBackProject
|
|
570
|
+
*/
|
|
478
571
|
VALUE
|
|
479
572
|
rb_calc_back_project_patch(VALUE self, VALUE image, VALUE patch_size, VALUE method, VALUE factor)
|
|
480
573
|
{
|
|
@@ -507,6 +600,22 @@ rb_calc_back_project_patch(VALUE self, VALUE image, VALUE patch_size, VALUE meth
|
|
|
507
600
|
return dst;
|
|
508
601
|
}
|
|
509
602
|
|
|
603
|
+
/*
|
|
604
|
+
* Compares two histograms.
|
|
605
|
+
* @overload compare_hist(hist1, hist2, method)
|
|
606
|
+
* @param hist1 [CvHistogram] First compared histogram.
|
|
607
|
+
* @param hist2 [CvHistogram] Second compared histogram of the same size as <tt>hist1</tt>.
|
|
608
|
+
* @param method [Integer]
|
|
609
|
+
* Comparison method that could be one of the following:
|
|
610
|
+
* - <tt>CV_COMP_CORREL</tt>: Correlation
|
|
611
|
+
* - <tt>CV_COMP_CHISQR</tt>: Chi-Square
|
|
612
|
+
* - <tt>CV_COMP_INTERSECT</tt>: Intersection
|
|
613
|
+
* - <tt>CV_COMP_BHATTACHARYYA</tt>: Bhattacharyya distance
|
|
614
|
+
* - <tt>CV_COMP_HELLINGER</tt>: Synonym for <tt>CV_COMP_BHATTACHARYYA</tt>
|
|
615
|
+
* @return [Number] Distance of the two histograms.
|
|
616
|
+
* @scope class
|
|
617
|
+
* @opencv_func cvCompareHist
|
|
618
|
+
*/
|
|
510
619
|
VALUE
|
|
511
620
|
rb_compare_hist(VALUE self, VALUE hist1, VALUE hist2, VALUE method)
|
|
512
621
|
{
|
|
@@ -522,6 +631,15 @@ rb_compare_hist(VALUE self, VALUE hist1, VALUE hist2, VALUE method)
|
|
|
522
631
|
return rb_float_new(result);
|
|
523
632
|
}
|
|
524
633
|
|
|
634
|
+
/*
|
|
635
|
+
* Divides one histogram by another.
|
|
636
|
+
* @overload calc_prob_density(hist1, hist2, scale=255)
|
|
637
|
+
* @param hist1 [CvHistogram] First histogram (the divisor).
|
|
638
|
+
* @param hist2 [CvHistogram] Second histogram.
|
|
639
|
+
* @param scale [Number] Scale factor for the destination histogram.
|
|
640
|
+
* @return [CvHistogram] Destination histogram.
|
|
641
|
+
* @opencv_func cvCalcProbDensity
|
|
642
|
+
*/
|
|
525
643
|
VALUE
|
|
526
644
|
rb_calc_prob_density(int argc, VALUE* argv, VALUE self)
|
|
527
645
|
{
|
|
@@ -542,5 +660,56 @@ rb_calc_prob_density(int argc, VALUE* argv, VALUE self)
|
|
|
542
660
|
return dst_hist;
|
|
543
661
|
}
|
|
544
662
|
|
|
663
|
+
void
|
|
664
|
+
init_ruby_class()
|
|
665
|
+
{
|
|
666
|
+
#if 0
|
|
667
|
+
// For documentation using YARD
|
|
668
|
+
VALUE opencv = rb_define_module("OpenCV");
|
|
669
|
+
#endif
|
|
670
|
+
|
|
671
|
+
if (rb_klass)
|
|
672
|
+
return;
|
|
673
|
+
|
|
674
|
+
VALUE opencv = rb_module_opencv();
|
|
675
|
+
rb_klass = rb_define_class_under(opencv, "CvHistogram", rb_cObject);
|
|
676
|
+
rb_define_alloc_func(rb_klass, rb_allocate);
|
|
677
|
+
rb_define_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
|
|
678
|
+
rb_define_method(rb_klass, "is_uniform?", RUBY_METHOD_FUNC(rb_is_uniform), 0);
|
|
679
|
+
rb_define_method(rb_klass, "is_sparse?", RUBY_METHOD_FUNC(rb_is_sparse), 0);
|
|
680
|
+
rb_define_method(rb_klass, "has_range?", RUBY_METHOD_FUNC(rb_has_range), 0);
|
|
681
|
+
rb_define_method(rb_klass, "dims", RUBY_METHOD_FUNC(rb_dims), 0);
|
|
682
|
+
rb_define_method(rb_klass, "calc_hist", RUBY_METHOD_FUNC(rb_calc_hist), -1);
|
|
683
|
+
rb_define_method(rb_klass, "calc_hist!", RUBY_METHOD_FUNC(rb_calc_hist_bang), -1);
|
|
684
|
+
rb_define_method(rb_klass, "[]", RUBY_METHOD_FUNC(rb_aref), -2);
|
|
685
|
+
rb_define_alias(rb_klass, "query_hist_value", "[]");
|
|
686
|
+
rb_define_method(rb_klass, "min_max_value", RUBY_METHOD_FUNC(rb_min_max_value), 0);
|
|
687
|
+
rb_define_method(rb_klass, "copy_hist", RUBY_METHOD_FUNC(rb_copy_hist), 0);
|
|
688
|
+
|
|
689
|
+
rb_define_method(rb_klass, "clear_hist", RUBY_METHOD_FUNC(rb_clear_hist), 0);
|
|
690
|
+
rb_define_alias(rb_klass, "clear", "clear_hist");
|
|
691
|
+
rb_define_method(rb_klass, "clear_hist!", RUBY_METHOD_FUNC(rb_clear_hist_bang), 0);
|
|
692
|
+
rb_define_alias(rb_klass, "clear!", "clear_hist!");
|
|
693
|
+
|
|
694
|
+
rb_define_method(rb_klass, "normalize_hist", RUBY_METHOD_FUNC(rb_normalize_hist), 1);
|
|
695
|
+
rb_define_alias(rb_klass, "normalize", "normalize_hist");
|
|
696
|
+
rb_define_method(rb_klass, "normalize_hist!", RUBY_METHOD_FUNC(rb_normalize_hist_bang), 1);
|
|
697
|
+
rb_define_alias(rb_klass, "normalize!", "normalize_hist!");
|
|
698
|
+
|
|
699
|
+
rb_define_method(rb_klass, "thresh_hist", RUBY_METHOD_FUNC(rb_thresh_hist), 1);
|
|
700
|
+
rb_define_alias(rb_klass, "thresh", "thresh_hist");
|
|
701
|
+
rb_define_method(rb_klass, "thresh_hist!", RUBY_METHOD_FUNC(rb_thresh_hist_bang), 1);
|
|
702
|
+
rb_define_alias(rb_klass, "thresh!", "thresh_hist!");
|
|
703
|
+
|
|
704
|
+
rb_define_method(rb_klass, "set_hist_bin_ranges", RUBY_METHOD_FUNC(rb_set_hist_bin_ranges), -1);
|
|
705
|
+
rb_define_method(rb_klass, "set_hist_bin_ranges!", RUBY_METHOD_FUNC(rb_set_hist_bin_ranges_bang), -1);
|
|
706
|
+
|
|
707
|
+
rb_define_method(rb_klass, "calc_back_project", RUBY_METHOD_FUNC(rb_calc_back_project), 1);
|
|
708
|
+
rb_define_method(rb_klass, "calc_back_project_patch", RUBY_METHOD_FUNC(rb_calc_back_project_patch), 4);
|
|
709
|
+
|
|
710
|
+
rb_define_singleton_method(rb_klass, "calc_prob_density", RUBY_METHOD_FUNC(rb_calc_prob_density), -1);
|
|
711
|
+
rb_define_singleton_method(rb_klass, "compare_hist", RUBY_METHOD_FUNC(rb_compare_hist), 3);
|
|
712
|
+
}
|
|
713
|
+
|
|
545
714
|
__NAMESPACE_END_CVHISTOGRAM
|
|
546
715
|
__NAMESPACE_END_OPENCV
|