ruby-opencv 0.0.9-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.
- checksums.yaml +7 -0
- data/.gitignore +25 -0
- data/DEVELOPERS_NOTE.md +137 -0
- data/Gemfile +8 -0
- data/History.txt +5 -0
- data/License.txt +30 -0
- data/Manifest.txt +227 -0
- data/README.md +98 -0
- data/Rakefile +90 -0
- data/config.yml +7 -0
- data/examples/alpha_blend.rb +21 -0
- data/examples/box.png +0 -0
- data/examples/box_in_scene.png +0 -0
- data/examples/contours/bitmap-contours-with-labels.png +0 -0
- data/examples/contours/bitmap-contours.png +0 -0
- data/examples/contours/bounding-box-detect-canny.rb +62 -0
- data/examples/contours/contour_retrieval_modes.rb +139 -0
- data/examples/contours/rotated-boxes.jpg +0 -0
- data/examples/convexhull.rb +47 -0
- data/examples/face_detect.rb +20 -0
- data/examples/find_obj.rb +169 -0
- data/examples/houghcircle.rb +22 -0
- data/examples/inpaint.png +0 -0
- data/examples/inpaint.rb +57 -0
- data/examples/lenna-rotated.jpg +0 -0
- data/examples/lenna.jpg +0 -0
- data/examples/match_kdtree.rb +88 -0
- data/examples/matching_to_many_images.rb +16 -0
- 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 +3 -0
- data/examples/paint.rb +70 -0
- data/examples/snake.rb +43 -0
- data/examples/stuff.jpg +0 -0
- data/examples/tiffany.jpg +0 -0
- data/ext/opencv/curve.cpp +112 -0
- data/ext/opencv/curve.h +34 -0
- data/ext/opencv/cvavgcomp.cpp +67 -0
- data/ext/opencv/cvavgcomp.h +39 -0
- data/ext/opencv/cvbox2d.cpp +197 -0
- data/ext/opencv/cvbox2d.h +61 -0
- data/ext/opencv/cvcapture.cpp +506 -0
- data/ext/opencv/cvcapture.h +72 -0
- data/ext/opencv/cvchain.cpp +233 -0
- data/ext/opencv/cvchain.h +46 -0
- data/ext/opencv/cvcircle32f.cpp +116 -0
- data/ext/opencv/cvcircle32f.h +52 -0
- data/ext/opencv/cvcondensation.cpp +282 -0
- data/ext/opencv/cvcondensation.h +49 -0
- data/ext/opencv/cvconnectedcomp.cpp +143 -0
- data/ext/opencv/cvconnectedcomp.h +49 -0
- data/ext/opencv/cvcontour.cpp +296 -0
- data/ext/opencv/cvcontour.h +48 -0
- data/ext/opencv/cvcontourtree.cpp +91 -0
- data/ext/opencv/cvcontourtree.h +41 -0
- data/ext/opencv/cvconvexitydefect.cpp +103 -0
- data/ext/opencv/cvconvexitydefect.h +42 -0
- data/ext/opencv/cverror.cpp +159 -0
- data/ext/opencv/cverror.h +28 -0
- data/ext/opencv/cvfeaturetree.cpp +125 -0
- data/ext/opencv/cvfeaturetree.h +55 -0
- data/ext/opencv/cvfont.cpp +208 -0
- data/ext/opencv/cvfont.h +64 -0
- data/ext/opencv/cvhaarclassifiercascade.cpp +168 -0
- data/ext/opencv/cvhaarclassifiercascade.h +39 -0
- data/ext/opencv/cvhistogram.cpp +546 -0
- data/ext/opencv/cvhistogram.h +73 -0
- data/ext/opencv/cvhumoments.cpp +139 -0
- data/ext/opencv/cvhumoments.h +51 -0
- data/ext/opencv/cvline.cpp +154 -0
- data/ext/opencv/cvline.h +54 -0
- data/ext/opencv/cvmat.cpp +5848 -0
- data/ext/opencv/cvmat.h +284 -0
- data/ext/opencv/cvmatnd.cpp +44 -0
- data/ext/opencv/cvmatnd.h +28 -0
- data/ext/opencv/cvmemstorage.cpp +68 -0
- data/ext/opencv/cvmemstorage.h +53 -0
- data/ext/opencv/cvmoments.cpp +287 -0
- data/ext/opencv/cvmoments.h +75 -0
- data/ext/opencv/cvpoint.cpp +228 -0
- data/ext/opencv/cvpoint.h +64 -0
- data/ext/opencv/cvpoint2d32f.cpp +211 -0
- data/ext/opencv/cvpoint2d32f.h +63 -0
- data/ext/opencv/cvpoint3d32f.cpp +245 -0
- data/ext/opencv/cvpoint3d32f.h +66 -0
- data/ext/opencv/cvrect.cpp +333 -0
- data/ext/opencv/cvrect.h +79 -0
- data/ext/opencv/cvscalar.cpp +236 -0
- data/ext/opencv/cvscalar.h +71 -0
- data/ext/opencv/cvseq.cpp +599 -0
- data/ext/opencv/cvseq.h +74 -0
- data/ext/opencv/cvsize.cpp +221 -0
- data/ext/opencv/cvsize.h +65 -0
- data/ext/opencv/cvsize2d32f.cpp +209 -0
- data/ext/opencv/cvsize2d32f.h +64 -0
- data/ext/opencv/cvslice.cpp +120 -0
- data/ext/opencv/cvslice.h +61 -0
- data/ext/opencv/cvsparsemat.cpp +44 -0
- data/ext/opencv/cvsparsemat.h +28 -0
- data/ext/opencv/cvsurfparams.cpp +199 -0
- data/ext/opencv/cvsurfparams.h +58 -0
- data/ext/opencv/cvsurfpoint.cpp +223 -0
- data/ext/opencv/cvsurfpoint.h +52 -0
- data/ext/opencv/cvtermcriteria.cpp +192 -0
- data/ext/opencv/cvtermcriteria.h +71 -0
- data/ext/opencv/cvtwopoints.cpp +116 -0
- data/ext/opencv/cvtwopoints.h +51 -0
- data/ext/opencv/cvutils.cpp +192 -0
- data/ext/opencv/cvutils.h +30 -0
- data/ext/opencv/cvvideowriter.cpp +137 -0
- data/ext/opencv/cvvideowriter.h +43 -0
- data/ext/opencv/extconf.rb +83 -0
- data/ext/opencv/gui.cpp +68 -0
- data/ext/opencv/gui.h +30 -0
- data/ext/opencv/iplconvkernel.cpp +192 -0
- data/ext/opencv/iplconvkernel.h +71 -0
- data/ext/opencv/iplimage.cpp +644 -0
- data/ext/opencv/iplimage.h +73 -0
- data/ext/opencv/mouseevent.cpp +181 -0
- data/ext/opencv/mouseevent.h +56 -0
- data/ext/opencv/opencv.cpp +722 -0
- data/ext/opencv/opencv.h +400 -0
- data/ext/opencv/pointset.cpp +274 -0
- data/ext/opencv/pointset.h +68 -0
- data/ext/opencv/trackbar.cpp +121 -0
- data/ext/opencv/trackbar.h +69 -0
- data/ext/opencv/window.cpp +357 -0
- data/ext/opencv/window.h +66 -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 +12 -0
- data/lib/opencv/psyched_yaml.rb +22 -0
- data/lib/opencv/version.rb +3 -0
- data/ruby-opencv.gemspec +44 -0
- data/test/helper.rb +166 -0
- data/test/runner.rb +30 -0
- data/test/samples/airplane.jpg +0 -0
- data/test/samples/baboon.jpg +0 -0
- data/test/samples/baboon200.jpg +0 -0
- data/test/samples/baboon200_rotated.jpg +0 -0
- data/test/samples/blank0.jpg +0 -0
- data/test/samples/blank1.jpg +0 -0
- data/test/samples/blank2.jpg +0 -0
- data/test/samples/blank3.jpg +0 -0
- data/test/samples/blank4.jpg +0 -0
- data/test/samples/blank5.jpg +0 -0
- data/test/samples/blank6.jpg +0 -0
- data/test/samples/blank7.jpg +0 -0
- data/test/samples/blank8.jpg +0 -0
- data/test/samples/blank9.jpg +0 -0
- data/test/samples/cat.jpg +0 -0
- data/test/samples/chessboard.jpg +0 -0
- data/test/samples/contours.jpg +0 -0
- data/test/samples/fruits.jpg +0 -0
- data/test/samples/haarcascade_frontalface_alt.xml.gz +0 -0
- data/test/samples/inpaint-mask.bmp +0 -0
- data/test/samples/lena-256x256.jpg +0 -0
- data/test/samples/lena-32x32.jpg +0 -0
- data/test/samples/lena-eyes.jpg +0 -0
- data/test/samples/lena-inpaint.jpg +0 -0
- data/test/samples/lena.jpg +0 -0
- data/test/samples/lines.jpg +0 -0
- data/test/samples/messy0.jpg +0 -0
- data/test/samples/messy1.jpg +0 -0
- data/test/samples/movie_sample.avi +0 -0
- data/test/samples/one_way_train_0000.jpg +0 -0
- data/test/samples/one_way_train_0001.jpg +0 -0
- data/test/samples/partially_blank0.jpg +0 -0
- data/test/samples/partially_blank1.jpg +0 -0
- data/test/samples/smooth0.jpg +0 -0
- data/test/samples/smooth1.jpg +0 -0
- data/test/samples/smooth2.jpg +0 -0
- data/test/samples/smooth3.jpg +0 -0
- data/test/samples/smooth4.jpg +0 -0
- data/test/samples/smooth5.jpg +0 -0
- data/test/samples/smooth6.jpg +0 -0
- data/test/samples/str-cv-rotated.jpg +0 -0
- data/test/samples/str-cv.jpg +0 -0
- data/test/samples/str-ov.jpg +0 -0
- data/test/samples/stuff.jpg +0 -0
- data/test/test_curve.rb +43 -0
- data/test/test_cvavgcomp.rb +24 -0
- data/test/test_cvbox2d.rb +76 -0
- data/test/test_cvcapture.rb +183 -0
- data/test/test_cvchain.rb +108 -0
- data/test/test_cvcircle32f.rb +41 -0
- data/test/test_cvconnectedcomp.rb +61 -0
- data/test/test_cvcontour.rb +150 -0
- data/test/test_cvcontourtree.rb +43 -0
- data/test/test_cverror.rb +50 -0
- data/test/test_cvfeaturetree.rb +65 -0
- data/test/test_cvfont.rb +58 -0
- data/test/test_cvhaarclassifiercascade.rb +63 -0
- data/test/test_cvhistogram.rb +271 -0
- data/test/test_cvhumoments.rb +83 -0
- data/test/test_cvline.rb +50 -0
- data/test/test_cvmat.rb +2947 -0
- data/test/test_cvmat_drawing.rb +349 -0
- data/test/test_cvmat_dxt.rb +150 -0
- data/test/test_cvmat_imageprocessing.rb +2025 -0
- data/test/test_cvmat_matching.rb +57 -0
- data/test/test_cvmoments.rb +180 -0
- data/test/test_cvpoint.rb +75 -0
- data/test/test_cvpoint2d32f.rb +75 -0
- data/test/test_cvpoint3d32f.rb +93 -0
- data/test/test_cvrect.rb +144 -0
- data/test/test_cvscalar.rb +113 -0
- data/test/test_cvseq.rb +295 -0
- data/test/test_cvsize.rb +75 -0
- data/test/test_cvsize2d32f.rb +75 -0
- data/test/test_cvslice.rb +31 -0
- data/test/test_cvsurfparams.rb +57 -0
- data/test/test_cvsurfpoint.rb +66 -0
- data/test/test_cvtermcriteria.rb +56 -0
- data/test/test_cvtwopoints.rb +40 -0
- data/test/test_cvvideowriter.rb +58 -0
- data/test/test_iplconvkernel.rb +54 -0
- data/test/test_iplimage.rb +236 -0
- data/test/test_mouseevent.rb +17 -0
- data/test/test_opencv.rb +324 -0
- data/test/test_pointset.rb +126 -0
- data/test/test_preliminary.rb +130 -0
- data/test/test_trackbar.rb +47 -0
- data/test/test_window.rb +115 -0
- metadata +386 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvcontourtree.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2007 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_CVCONTOURTREE_H
|
11
|
+
#define RUBY_OPENCV_CVCONTOURTREE_H
|
12
|
+
#include "opencv.h"
|
13
|
+
|
14
|
+
#define __NAMESPACE_BEGIN_CVCONTOURTREE namespace cCvContourTree {
|
15
|
+
#define __NAMESPACE_END_CVCONTOURTREE }
|
16
|
+
|
17
|
+
__NAMESPACE_BEGIN_OPENCV
|
18
|
+
__NAMESPACE_BEGIN_CVCONTOURTREE
|
19
|
+
|
20
|
+
VALUE rb_class();
|
21
|
+
|
22
|
+
void define_ruby_class();
|
23
|
+
|
24
|
+
VALUE rb_p1(VALUE self);
|
25
|
+
VALUE rb_p2(VALUE self);
|
26
|
+
VALUE rb_contour(VALUE self, VALUE criteria);
|
27
|
+
|
28
|
+
VALUE new_object();
|
29
|
+
|
30
|
+
__NAMESPACE_END_CVCONTOURTREE
|
31
|
+
|
32
|
+
inline CvContourTree*
|
33
|
+
CVCONTOURTREE(VALUE object){
|
34
|
+
CvContourTree *ptr;
|
35
|
+
Data_Get_Struct(object, CvContourTree, ptr);
|
36
|
+
return ptr;
|
37
|
+
}
|
38
|
+
|
39
|
+
__NAMESPACE_END_OPENCV
|
40
|
+
|
41
|
+
#endif // RUBY_OPENCV_CVCONTOUR_H
|
@@ -0,0 +1,103 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvconvexitydefect.cpp -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2007 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "cvconvexitydefect.h"
|
11
|
+
/*
|
12
|
+
* Document-class: OpenCV::CvConvexityDefect
|
13
|
+
*
|
14
|
+
* Convexity.
|
15
|
+
* C structure is here.
|
16
|
+
* typedef struct CvConvexityDefect {
|
17
|
+
* CvPoint* start;
|
18
|
+
* CvPoint* end;
|
19
|
+
* CvPoint* depth_point;
|
20
|
+
* float depth;
|
21
|
+
* } CvConvexityDefect;
|
22
|
+
*
|
23
|
+
*/
|
24
|
+
__NAMESPACE_BEGIN_OPENCV
|
25
|
+
__NAMESPACE_BEGIN_CVCONVEXITYDEFECT
|
26
|
+
|
27
|
+
VALUE rb_klass;
|
28
|
+
|
29
|
+
VALUE
|
30
|
+
rb_class()
|
31
|
+
{
|
32
|
+
return rb_klass;
|
33
|
+
}
|
34
|
+
|
35
|
+
void
|
36
|
+
define_ruby_class()
|
37
|
+
{
|
38
|
+
if (rb_klass)
|
39
|
+
return;
|
40
|
+
/*
|
41
|
+
* opencv = rb_define_module("OpenCV");
|
42
|
+
*
|
43
|
+
* note: this comment is used by rdoc.
|
44
|
+
*/
|
45
|
+
VALUE opencv = rb_module_opencv();
|
46
|
+
|
47
|
+
rb_klass = rb_define_class_under(opencv, "CvConvexityDefect", rb_cObject);
|
48
|
+
rb_define_method(rb_klass, "start", RUBY_METHOD_FUNC(rb_start), 0);
|
49
|
+
rb_define_method(rb_klass, "end", RUBY_METHOD_FUNC(rb_end), 0);
|
50
|
+
rb_define_method(rb_klass, "depth_point", RUBY_METHOD_FUNC(rb_depth_point), 0);
|
51
|
+
rb_define_method(rb_klass, "depth", RUBY_METHOD_FUNC(rb_depth), 0);
|
52
|
+
}
|
53
|
+
|
54
|
+
/*
|
55
|
+
* call-seq:
|
56
|
+
* start -> cvpoint
|
57
|
+
*
|
58
|
+
* Return start point as CvPoint.
|
59
|
+
*/
|
60
|
+
VALUE
|
61
|
+
rb_start(VALUE self)
|
62
|
+
{
|
63
|
+
return cCvPoint::new_object(*CVCONVEXITYDEFECT(self)->start);
|
64
|
+
}
|
65
|
+
|
66
|
+
/*
|
67
|
+
* call-seq:
|
68
|
+
* end -> cvpoint
|
69
|
+
*
|
70
|
+
* Return end point as CvPoint.
|
71
|
+
*/
|
72
|
+
VALUE
|
73
|
+
rb_end(VALUE self)
|
74
|
+
{
|
75
|
+
return cCvPoint::new_object(*CVCONVEXITYDEFECT(self)->end);
|
76
|
+
}
|
77
|
+
|
78
|
+
/*
|
79
|
+
* call-seq:
|
80
|
+
* depth_point -> cvpoint
|
81
|
+
*
|
82
|
+
* Return depth point as CvPoint.
|
83
|
+
*/
|
84
|
+
VALUE
|
85
|
+
rb_depth_point(VALUE self)
|
86
|
+
{
|
87
|
+
return cCvPoint::new_object(*CVCONVEXITYDEFECT(self)->depth_point);
|
88
|
+
}
|
89
|
+
|
90
|
+
/*
|
91
|
+
* call-seq:
|
92
|
+
* depth -> float
|
93
|
+
*
|
94
|
+
* Return depth.
|
95
|
+
*/
|
96
|
+
VALUE
|
97
|
+
rb_depth(VALUE self)
|
98
|
+
{
|
99
|
+
return rb_float_new(CVCONVEXITYDEFECT(self)->depth);
|
100
|
+
}
|
101
|
+
|
102
|
+
__NAMESPACE_END_CVCONVEXITYDEFECT
|
103
|
+
__NAMESPACE_END_OPENCV
|
@@ -0,0 +1,42 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvconvexitydefect.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2007 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_CVCONVEXITYDEFECT_H
|
11
|
+
#define RUBY_OPENCV_CVCONVEXITYDEFECT_H
|
12
|
+
|
13
|
+
#include "opencv.h"
|
14
|
+
|
15
|
+
#define __NAMESPACE_BEGIN_CVCONVEXITYDEFECT namespace cCvConvexityDefect {
|
16
|
+
#define __NAMESPACE_END_CVCONVEXITYDEFECT }
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_CVCONVEXITYDEFECT
|
20
|
+
|
21
|
+
VALUE rb_class();
|
22
|
+
|
23
|
+
void define_ruby_class();
|
24
|
+
|
25
|
+
VALUE rb_start(VALUE self);
|
26
|
+
VALUE rb_end(VALUE self);
|
27
|
+
VALUE rb_depth_point(VALUE self);
|
28
|
+
VALUE rb_depth(VALUE self);
|
29
|
+
|
30
|
+
__NAMESPACE_END_CVCONVEXITYDEFECT
|
31
|
+
|
32
|
+
inline CvConvexityDefect*
|
33
|
+
CVCONVEXITYDEFECT(VALUE object)
|
34
|
+
{
|
35
|
+
CvConvexityDefect *ptr;
|
36
|
+
Data_Get_Struct(object, CvConvexityDefect, ptr);
|
37
|
+
return ptr;
|
38
|
+
}
|
39
|
+
|
40
|
+
__NAMESPACE_END_OPENCV
|
41
|
+
|
42
|
+
#endif // RUBY_OPENCV_CVCONVEXITYDEFECT_H
|
@@ -0,0 +1,159 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cverror.cpp -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "cverror.h"
|
11
|
+
/*
|
12
|
+
* Document-class: OpenCV::CvError
|
13
|
+
*
|
14
|
+
* =Internal OpenCV errors
|
15
|
+
*
|
16
|
+
* This module collect OpenCV internal error wrapper classes.
|
17
|
+
* * CvStatusBackTrace
|
18
|
+
* * CvStatusError
|
19
|
+
* * CvStatusInternal
|
20
|
+
* * CvStatusNoMemory
|
21
|
+
* * CvStatusBadArgument
|
22
|
+
* * CvStatusNoConverge
|
23
|
+
* * CvStatusAutoTrace
|
24
|
+
*
|
25
|
+
* * CvHeaderIsNull
|
26
|
+
* * CvBadImageSize
|
27
|
+
* * CvBadOffset
|
28
|
+
* * CvBadDataPointer
|
29
|
+
* * CvBadStep
|
30
|
+
* * CvBadModelOrChannelSequence
|
31
|
+
* * CvBadNumChannels
|
32
|
+
* * CvBadAlphaChannel
|
33
|
+
* * CvBadOrder
|
34
|
+
* * CvBadOrigin
|
35
|
+
* * CvBadAlign
|
36
|
+
* * CvBadCallback
|
37
|
+
* * CvBadTileSize
|
38
|
+
* * CvBadCOI
|
39
|
+
* * CvBadROISize
|
40
|
+
*
|
41
|
+
* * CvMaskIsTiled
|
42
|
+
*
|
43
|
+
* * CvStatusNullPointer
|
44
|
+
* * CvStatusVectorLengthError
|
45
|
+
* * CvStatusFilterStructContentError
|
46
|
+
* * CvStatusKernelStructContentError
|
47
|
+
* * CvStatusFilterOffsetError
|
48
|
+
*
|
49
|
+
* * CvStatusBadSize
|
50
|
+
* * CvStatusDivByZero
|
51
|
+
* * CvStatusInplaceNotSupported
|
52
|
+
* * CvStatusObjectNotFound
|
53
|
+
* * CvStatusUnmatchedFormant
|
54
|
+
* * CvStatusUnsupportedFormats
|
55
|
+
* * CvStatusOutOfRange
|
56
|
+
* * CvStatusParseError
|
57
|
+
* * CvStatusNotImplemented
|
58
|
+
* * CvStsBadMemoryBlock
|
59
|
+
*/
|
60
|
+
|
61
|
+
__NAMESPACE_BEGIN_OPENCV
|
62
|
+
__NAMESPACE_BEGIN_CVERROR
|
63
|
+
|
64
|
+
st_table *cv_error = st_init_numtable();
|
65
|
+
|
66
|
+
VALUE rb_klass;
|
67
|
+
|
68
|
+
void
|
69
|
+
REGISTER_CVERROR(const char* object_name, int error_code)
|
70
|
+
{
|
71
|
+
st_insert(cv_error, (st_data_t)error_code,
|
72
|
+
(st_data_t)rb_define_class_under(rb_module_opencv(), object_name, rb_klass));
|
73
|
+
}
|
74
|
+
|
75
|
+
VALUE
|
76
|
+
rb_class()
|
77
|
+
{
|
78
|
+
return rb_klass;
|
79
|
+
}
|
80
|
+
|
81
|
+
void define_ruby_class()
|
82
|
+
{
|
83
|
+
if (rb_klass)
|
84
|
+
return;
|
85
|
+
|
86
|
+
/*
|
87
|
+
* opencv = rb_define_module("OpenCV");
|
88
|
+
*
|
89
|
+
* note: this comment is used by rdoc.
|
90
|
+
*/
|
91
|
+
VALUE opencv = rb_module_opencv();
|
92
|
+
|
93
|
+
rb_klass = rb_define_class_under(opencv, "CvError", rb_eStandardError);
|
94
|
+
REGISTER_CVERROR("CvStsBackTrace", CV_StsBackTrace);
|
95
|
+
REGISTER_CVERROR("CvStsError", CV_StsError);
|
96
|
+
REGISTER_CVERROR("CvStsInternal", CV_StsInternal);
|
97
|
+
REGISTER_CVERROR("CvStsNoMem", CV_StsNoMem);
|
98
|
+
REGISTER_CVERROR("CvStsBadArg", CV_StsBadArg);
|
99
|
+
REGISTER_CVERROR("CvStsBadFunc", CV_StsBadFunc);
|
100
|
+
REGISTER_CVERROR("CvStsNoConv", CV_StsNoConv);
|
101
|
+
REGISTER_CVERROR("CvStsAutoTrace", CV_StsAutoTrace);
|
102
|
+
REGISTER_CVERROR("CvHeaderIsNull", CV_HeaderIsNull);
|
103
|
+
REGISTER_CVERROR("CvBadImageSize", CV_BadImageSize);
|
104
|
+
REGISTER_CVERROR("CvBadOffset", CV_BadOffset);
|
105
|
+
REGISTER_CVERROR("CvBadDataPtr", CV_BadDataPtr);
|
106
|
+
REGISTER_CVERROR("CvBadStep", CV_BadStep);
|
107
|
+
REGISTER_CVERROR("CvBadModelOrChSeq", CV_BadModelOrChSeq);
|
108
|
+
REGISTER_CVERROR("CvBadNumChannels", CV_BadNumChannels);
|
109
|
+
REGISTER_CVERROR("CvBadNumChannel1U", CV_BadNumChannel1U);
|
110
|
+
REGISTER_CVERROR("CvBadDepth", CV_BadDepth);
|
111
|
+
REGISTER_CVERROR("CvBadAlphaChannel", CV_BadAlphaChannel);
|
112
|
+
REGISTER_CVERROR("CvBadOrder", CV_BadOrder);
|
113
|
+
REGISTER_CVERROR("CvBadOrigin", CV_BadOrigin);
|
114
|
+
REGISTER_CVERROR("CvBadAlign", CV_BadAlign);
|
115
|
+
REGISTER_CVERROR("CvBadCallBack", CV_BadCallBack);
|
116
|
+
REGISTER_CVERROR("CvBadTileSize", CV_BadTileSize);
|
117
|
+
REGISTER_CVERROR("CvBadCOI", CV_BadCOI);
|
118
|
+
REGISTER_CVERROR("CvBadROISize", CV_BadROISize);
|
119
|
+
REGISTER_CVERROR("CvMaskIsTiled", CV_MaskIsTiled);
|
120
|
+
REGISTER_CVERROR("CvStsNullPtr", CV_StsNullPtr);
|
121
|
+
REGISTER_CVERROR("CvStsVecLengthErr", CV_StsVecLengthErr);
|
122
|
+
REGISTER_CVERROR("CvStsFilterStructContentErr", CV_StsFilterStructContentErr);
|
123
|
+
REGISTER_CVERROR("CvStsKernelStructContentErr", CV_StsKernelStructContentErr);
|
124
|
+
REGISTER_CVERROR("CvStsFilterOffsetErr", CV_StsFilterOffsetErr);
|
125
|
+
REGISTER_CVERROR("CvStsBadSize", CV_StsBadSize);
|
126
|
+
REGISTER_CVERROR("CvStsDivByZero", CV_StsDivByZero);
|
127
|
+
REGISTER_CVERROR("CvStsInplaceNotSupported", CV_StsInplaceNotSupported);
|
128
|
+
REGISTER_CVERROR("CvStsObjectNotFound", CV_StsObjectNotFound);
|
129
|
+
REGISTER_CVERROR("CvStsUnmatchedFormats", CV_StsUnmatchedFormats);
|
130
|
+
REGISTER_CVERROR("CvStsBadFlag", CV_StsBadFlag);
|
131
|
+
REGISTER_CVERROR("CvStsBadPoint", CV_StsBadPoint);
|
132
|
+
REGISTER_CVERROR("CvStsBadMask", CV_StsBadMask);
|
133
|
+
REGISTER_CVERROR("CvStsUnmatchedSizes", CV_StsUnmatchedSizes);
|
134
|
+
REGISTER_CVERROR("CvStsUnsupportedFormat", CV_StsUnsupportedFormat);
|
135
|
+
REGISTER_CVERROR("CvStsOutOfRange", CV_StsOutOfRange);
|
136
|
+
REGISTER_CVERROR("CvStsParseError", CV_StsParseError);
|
137
|
+
REGISTER_CVERROR("CvStsNotImplemented", CV_StsNotImplemented);
|
138
|
+
REGISTER_CVERROR("CvStsBadMemBlock", CV_StsBadMemBlock);
|
139
|
+
REGISTER_CVERROR("CvStsAssert", CV_StsAssert);
|
140
|
+
REGISTER_CVERROR("CvGpuNotSupported", CV_GpuNotSupported);
|
141
|
+
REGISTER_CVERROR("CvGpuApiCallError", CV_GpuApiCallError);
|
142
|
+
}
|
143
|
+
|
144
|
+
VALUE
|
145
|
+
by_code(int error_code)
|
146
|
+
{
|
147
|
+
VALUE klass = 0;
|
148
|
+
st_lookup(cv_error, (st_data_t)error_code, (st_data_t*)&klass);
|
149
|
+
return klass ? klass : rb_eStandardError;
|
150
|
+
}
|
151
|
+
|
152
|
+
void
|
153
|
+
raise(cv::Exception e)
|
154
|
+
{
|
155
|
+
rb_raise(by_code(e.code), "%s", e.what());
|
156
|
+
}
|
157
|
+
|
158
|
+
__NAMESPACE_END_CVERROR
|
159
|
+
__NAMESPACE_END_OPENCV
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cverror.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_CVERROR_H
|
11
|
+
#define RUBY_OPENCV_CVERROR_H
|
12
|
+
|
13
|
+
#include "opencv.h"
|
14
|
+
|
15
|
+
#define __NAMESPACE_BEGIN_CVERROR namespace cCvError {
|
16
|
+
#define __NAMESPACE_END_CVERROR }
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_CVERROR
|
20
|
+
|
21
|
+
void define_ruby_class();
|
22
|
+
VALUE by_code(int error_code);
|
23
|
+
void raise(cv::Exception e);
|
24
|
+
|
25
|
+
__NAMESPACE_END_CVERROR
|
26
|
+
__NAMESPACE_END_OPENCV
|
27
|
+
|
28
|
+
#endif // RUBY_OPENCV_CVERROR_H
|
@@ -0,0 +1,125 @@
|
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvfeaturetree.cpp -
|
4
|
+
|
5
|
+
$Author: ser1zw $
|
6
|
+
|
7
|
+
Copyright (C) 2011 ser1zw
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "cvfeaturetree.h"
|
11
|
+
/*
|
12
|
+
* Document-class: OpenCV::CvFeatureTree
|
13
|
+
*/
|
14
|
+
__NAMESPACE_BEGIN_OPENCV
|
15
|
+
__NAMESPACE_BEGIN_CVFEATURETREE
|
16
|
+
|
17
|
+
VALUE rb_klass;
|
18
|
+
|
19
|
+
VALUE
|
20
|
+
rb_class()
|
21
|
+
{
|
22
|
+
return rb_klass;
|
23
|
+
}
|
24
|
+
|
25
|
+
void
|
26
|
+
mark_feature_tree(void *ptr)
|
27
|
+
{
|
28
|
+
if (ptr) {
|
29
|
+
VALUE desc = ((CvFeatureTreeWrap*)ptr)->desc;
|
30
|
+
rb_gc_mark(desc);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
void
|
35
|
+
rb_release_feature_tree(void *ptr)
|
36
|
+
{
|
37
|
+
if (ptr) {
|
38
|
+
CvFeatureTree* ft = ((CvFeatureTreeWrap*)ptr)->feature_tree;
|
39
|
+
cvReleaseFeatureTree(ft);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
VALUE
|
44
|
+
rb_allocate(VALUE klass)
|
45
|
+
{
|
46
|
+
CvFeatureTreeWrap* ptr;
|
47
|
+
return Data_Make_Struct(klass, CvFeatureTreeWrap, mark_feature_tree,
|
48
|
+
rb_release_feature_tree, ptr);
|
49
|
+
}
|
50
|
+
|
51
|
+
void
|
52
|
+
define_ruby_class()
|
53
|
+
{
|
54
|
+
if (rb_klass)
|
55
|
+
return;
|
56
|
+
/*
|
57
|
+
* opencv = rb_define_module("OpenCV");
|
58
|
+
*
|
59
|
+
* note: this comment is used by rdoc.
|
60
|
+
*/
|
61
|
+
VALUE opencv = rb_module_opencv();
|
62
|
+
|
63
|
+
rb_klass = rb_define_class_under(opencv, "CvFeatureTree", rb_cObject);
|
64
|
+
rb_define_alloc_func(rb_klass, rb_allocate);
|
65
|
+
rb_define_private_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), 1);
|
66
|
+
|
67
|
+
rb_define_method(rb_klass, "find_features", RUBY_METHOD_FUNC(rb_find_features), 3);
|
68
|
+
}
|
69
|
+
|
70
|
+
/*
|
71
|
+
* call-seq:
|
72
|
+
* new(desc)
|
73
|
+
*
|
74
|
+
* Create a new kd-tree
|
75
|
+
*/
|
76
|
+
VALUE
|
77
|
+
rb_initialize(VALUE self, VALUE desc)
|
78
|
+
{
|
79
|
+
CvMat* desc_mat = CVMAT_WITH_CHECK(desc);
|
80
|
+
CvFeatureTreeWrap* self_ptr = (CvFeatureTreeWrap*)DATA_PTR(self);
|
81
|
+
free(self_ptr);
|
82
|
+
self_ptr = ALLOC(CvFeatureTreeWrap);
|
83
|
+
try {
|
84
|
+
self_ptr->feature_tree = cvCreateKDTree(desc_mat);
|
85
|
+
}
|
86
|
+
catch (cv::Exception& e) {
|
87
|
+
raise_cverror(e);
|
88
|
+
}
|
89
|
+
self_ptr->desc = desc;
|
90
|
+
return self;
|
91
|
+
}
|
92
|
+
|
93
|
+
/*
|
94
|
+
* call-seq:
|
95
|
+
* find_features(desc, rows, cols, k, emax) -> array(results, dist)
|
96
|
+
*
|
97
|
+
* Find features from kd-tree
|
98
|
+
*
|
99
|
+
* desc: m x d matrix of (row-)vectors to find the nearest neighbors of.
|
100
|
+
* k: The number of neighbors to find.
|
101
|
+
* emax: The maximum number of leaves to visit.
|
102
|
+
*
|
103
|
+
* return
|
104
|
+
* results: m x k set of row indices of matching vectors (referring to matrix passed to cvCreateFeatureTree). Contains -1 in some columns if fewer than k neighbors found.
|
105
|
+
* dist: m x k matrix of distances to k nearest neighbors.
|
106
|
+
*/
|
107
|
+
VALUE
|
108
|
+
rb_find_features(VALUE self, VALUE desc, VALUE k, VALUE emax)
|
109
|
+
{
|
110
|
+
CvMat* desc_mat = CVMAT_WITH_CHECK(desc);
|
111
|
+
int _k = NUM2INT(k);
|
112
|
+
VALUE results = cCvMat::new_object(desc_mat->rows, _k, CV_32SC1);
|
113
|
+
VALUE dist = cCvMat::new_object(desc_mat->rows, _k, CV_64FC1);
|
114
|
+
try {
|
115
|
+
cvFindFeatures(CVFEATURETREE(self), desc_mat, CVMAT(results), CVMAT(dist), _k, NUM2INT(emax));
|
116
|
+
}
|
117
|
+
catch (cv::Exception& e) {
|
118
|
+
raise_cverror(e);
|
119
|
+
}
|
120
|
+
return rb_assoc_new(results, dist);
|
121
|
+
}
|
122
|
+
|
123
|
+
__NAMESPACE_END_OPENCV
|
124
|
+
__NAMESPACE_END_CVFEATURETREE
|
125
|
+
|