opencv-ffi 0.0.1

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 (130) hide show
  1. data/.gitignore +7 -0
  2. data/Gemfile +15 -0
  3. data/README.md +126 -0
  4. data/Rakefile +52 -0
  5. data/docs/DocsIndex.md +1 -0
  6. data/docs/examples/load_image.rb +25 -0
  7. data/ext/Rakefile +13 -0
  8. data/ext/aishack-sift/.gitignore +4 -0
  9. data/ext/aishack-sift/Descriptor.h +34 -0
  10. data/ext/aishack-sift/KeyPoint.h +38 -0
  11. data/ext/aishack-sift/README +20 -0
  12. data/ext/aishack-sift/SIFT.cpp +1036 -0
  13. data/ext/aishack-sift/SIFT.h +84 -0
  14. data/ext/aishack-sift/example/.gitignore +2 -0
  15. data/ext/aishack-sift/example/Makefile +24 -0
  16. data/ext/aishack-sift/example/MySIFT.cpp +29 -0
  17. data/ext/aishack-sift/mkrf_conf.rb +13 -0
  18. data/ext/aishack-sift/siftlib.cpp +85 -0
  19. data/ext/eigen/.gitignore +4 -0
  20. data/ext/eigen/eigen_polynomial.cpp +41 -0
  21. data/ext/eigen/eigen_svd.cpp +100 -0
  22. data/ext/eigen/mkrf_conf.rb +14 -0
  23. data/ext/mkrf-monkey.rb +85 -0
  24. data/ext/mkrf-rakehelper-monkey.rb +52 -0
  25. data/ext/mkrf_conf.rb +3 -0
  26. data/ext/opencv-ffi/.gitignore +4 -0
  27. data/ext/opencv-ffi/matcher_helper.cpp +56 -0
  28. data/ext/opencv-ffi/mkrf_conf.rb +12 -0
  29. data/ext/opencv-ffi/vector_math.cpp +39 -0
  30. data/ext/opensurf/.gitignore +4 -0
  31. data/ext/opensurf/README +38 -0
  32. data/ext/opensurf/fasthessian.cpp +376 -0
  33. data/ext/opensurf/fasthessian.h +108 -0
  34. data/ext/opensurf/integral.cpp +58 -0
  35. data/ext/opensurf/integral.h +55 -0
  36. data/ext/opensurf/ipoint.cpp +108 -0
  37. data/ext/opensurf/ipoint.h +76 -0
  38. data/ext/opensurf/kmeans.h +172 -0
  39. data/ext/opensurf/mkrf_conf.rb +10 -0
  40. data/ext/opensurf/responselayer.h +92 -0
  41. data/ext/opensurf/surf.cpp +317 -0
  42. data/ext/opensurf/surf.h +66 -0
  43. data/ext/opensurf/surflib.cpp +98 -0
  44. data/ext/opensurf/surflib.h +96 -0
  45. data/ext/opensurf/utils.cpp +357 -0
  46. data/ext/opensurf/utils.h +63 -0
  47. data/lib/.gitignore +1 -0
  48. data/lib/opencv-ffi-ext/eigen.rb +84 -0
  49. data/lib/opencv-ffi-ext/features2d.rb +4 -0
  50. data/lib/opencv-ffi-ext/matcher_helper.rb +24 -0
  51. data/lib/opencv-ffi-ext/opensurf.rb +217 -0
  52. data/lib/opencv-ffi-ext/sift.rb +118 -0
  53. data/lib/opencv-ffi-ext/vector_math.rb +115 -0
  54. data/lib/opencv-ffi-wrappers.rb +7 -0
  55. data/lib/opencv-ffi-wrappers/core.rb +24 -0
  56. data/lib/opencv-ffi-wrappers/core/iplimage.rb +50 -0
  57. data/lib/opencv-ffi-wrappers/core/mat.rb +268 -0
  58. data/lib/opencv-ffi-wrappers/core/misc_draw.rb +44 -0
  59. data/lib/opencv-ffi-wrappers/core/point.rb +286 -0
  60. data/lib/opencv-ffi-wrappers/core/rect.rb +40 -0
  61. data/lib/opencv-ffi-wrappers/core/scalar.rb +104 -0
  62. data/lib/opencv-ffi-wrappers/core/size.rb +88 -0
  63. data/lib/opencv-ffi-wrappers/enumerable.rb +10 -0
  64. data/lib/opencv-ffi-wrappers/features2d.rb +17 -0
  65. data/lib/opencv-ffi-wrappers/features2d/image_patch.rb +322 -0
  66. data/lib/opencv-ffi-wrappers/features2d/star.rb +111 -0
  67. data/lib/opencv-ffi-wrappers/features2d/surf.rb +115 -0
  68. data/lib/opencv-ffi-wrappers/highgui.rb +10 -0
  69. data/lib/opencv-ffi-wrappers/imgproc.rb +4 -0
  70. data/lib/opencv-ffi-wrappers/imgproc/features.rb +35 -0
  71. data/lib/opencv-ffi-wrappers/imgproc/geometric.rb +39 -0
  72. data/lib/opencv-ffi-wrappers/matcher.rb +297 -0
  73. data/lib/opencv-ffi-wrappers/matrix.rb +37 -0
  74. data/lib/opencv-ffi-wrappers/misc.rb +41 -0
  75. data/lib/opencv-ffi-wrappers/misc/params.rb +34 -0
  76. data/lib/opencv-ffi-wrappers/sequence.rb +37 -0
  77. data/lib/opencv-ffi-wrappers/vectors.rb +38 -0
  78. data/lib/opencv-ffi.rb +12 -0
  79. data/lib/opencv-ffi/calib3d.rb +26 -0
  80. data/lib/opencv-ffi/core.rb +15 -0
  81. data/lib/opencv-ffi/core/draw.rb +68 -0
  82. data/lib/opencv-ffi/core/dynamic.rb +13 -0
  83. data/lib/opencv-ffi/core/library.rb +5 -0
  84. data/lib/opencv-ffi/core/operations.rb +122 -0
  85. data/lib/opencv-ffi/core/point.rb +22 -0
  86. data/lib/opencv-ffi/core/types.rb +172 -0
  87. data/lib/opencv-ffi/cvffi.rb +8 -0
  88. data/lib/opencv-ffi/features2d.rb +7 -0
  89. data/lib/opencv-ffi/features2d/library.rb +6 -0
  90. data/lib/opencv-ffi/features2d/star.rb +30 -0
  91. data/lib/opencv-ffi/features2d/surf.rb +38 -0
  92. data/lib/opencv-ffi/highgui.rb +31 -0
  93. data/lib/opencv-ffi/imgproc.rb +9 -0
  94. data/lib/opencv-ffi/imgproc/features.rb +37 -0
  95. data/lib/opencv-ffi/imgproc/geometric.rb +42 -0
  96. data/lib/opencv-ffi/imgproc/library.rb +6 -0
  97. data/lib/opencv-ffi/imgproc/misc.rb +39 -0
  98. data/lib/opencv-ffi/version.rb +3 -0
  99. data/opencv-ffi.gemspec +26 -0
  100. data/test/core/test_draw.rb +46 -0
  101. data/test/core/test_operations.rb +135 -0
  102. data/test/core/test_size.rb +14 -0
  103. data/test/core/test_text.rb +52 -0
  104. data/test/ext/test_eigen.rb +105 -0
  105. data/test/ext/test_opensurf.rb +35 -0
  106. data/test/ext/test_sift.rb +26 -0
  107. data/test/ext/test_vector_math.rb +85 -0
  108. data/test/features2d/test_surf.rb +63 -0
  109. data/test/imgproc/test_goodfeatures.rb +18 -0
  110. data/test/setup.rb +65 -0
  111. data/test/test_calib3d.rb +38 -0
  112. data/test/test_core.rb +26 -0
  113. data/test/test_ext.rb +8 -0
  114. data/test/test_features2d.rb +9 -0
  115. data/test/test_files/images/IMG_7088.JPG +0 -0
  116. data/test/test_files/images/IMG_7088_small.JPG +0 -0
  117. data/test/test_files/images/IMG_7089.JPG +0 -0
  118. data/test/test_highgui.rb +26 -0
  119. data/test/test_imgproc.rb +35 -0
  120. data/test/test_wrappers.rb +8 -0
  121. data/test/wrappers/core/test_draw.rb +41 -0
  122. data/test/wrappers/core/test_mat.rb +40 -0
  123. data/test/wrappers/core/test_operations.rb +35 -0
  124. data/test/wrappers/core/test_types.rb +235 -0
  125. data/test/wrappers/features2d/test_image_patch.rb +108 -0
  126. data/test/wrappers/test_imgproc.rb +87 -0
  127. data/test/wrappers/test_matcher.rb +96 -0
  128. data/test/wrappers/test_star.rb +28 -0
  129. data/test/wrappers/test_surf.rb +36 -0
  130. metadata +234 -0
@@ -0,0 +1,22 @@
1
+ ## An omnibus file which brings in all the core/* sub-files
2
+
3
+ require 'core'
4
+
5
+ module CVFFI
6
+
7
+ class CvPoint < NiceFFI::Struct
8
+ layout :x, :int,
9
+ :y, :int
10
+ end
11
+
12
+ class CvPoint2D32f < NiceFFI::Struct
13
+ layout :x, :float,
14
+ :y, :float
15
+ end
16
+
17
+ class CvPoint2D64f < NiceFFI::Struct
18
+ layout :x, :double,
19
+ :y, :double
20
+ end
21
+ end
22
+
@@ -0,0 +1,172 @@
1
+ require 'opencv-ffi/core/library'
2
+
3
+ module CVFFI
4
+
5
+ class CvRect < NiceFFI::Struct
6
+ layout :x, :int,
7
+ :y, :int,
8
+ :width, :int,
9
+ :height, :int
10
+ end
11
+
12
+ class CvSizeBase < NiceFFI::Struct
13
+ end
14
+
15
+ class CvSize < CvSizeBase
16
+ layout :width, :int,
17
+ :height, :int
18
+ end
19
+
20
+ class CvSize2D32f < CvSizeBase
21
+ layout :width, :float,
22
+ :height, :float
23
+ end
24
+
25
+ class CvSize2D64f < CvSizeBase
26
+ layout :width, :double,
27
+ :height, :double
28
+ end
29
+
30
+ class CvPointBase < NiceFFI::Struct
31
+ end
32
+
33
+ class CvPoint < CvPointBase
34
+ layout :x, :int,
35
+ :y, :int
36
+ end
37
+
38
+ class CvPoint2D32f < CvPointBase
39
+ layout :x, :float,
40
+ :y, :float
41
+ end
42
+
43
+ class CvPoint2D64f < CvPointBase
44
+ layout :x, :double,
45
+ :y, :double
46
+ end
47
+
48
+ class CvPoint3DBase < NiceFFI::Struct
49
+ end
50
+
51
+ class CvPoint3D32f < CvPoint3DBase
52
+ layout :x, :float,
53
+ :y, :float,
54
+ :z, :float
55
+ end
56
+
57
+ class CvPoint3D64f < CvPoint3DBase
58
+ layout :x, :double,
59
+ :y, :double,
60
+ :z, :double
61
+ end
62
+
63
+
64
+
65
+ #
66
+ # CvScalar
67
+ #
68
+ class CvScalar < NiceFFI::Struct
69
+ # layout :val, [:double, 4 ]
70
+ layout :w, :double,
71
+ :x, :double,
72
+ :y, :double,
73
+ :z, :double
74
+ end
75
+
76
+ #
77
+ # CvMat
78
+ #
79
+ class CvMat < NiceFFI::Struct
80
+ layout :type, :int,
81
+ :step, :int,
82
+ :refcount, :pointer,
83
+ :hdr_refcount, :int,
84
+ :data, :pointer,
85
+ :height, :int,
86
+ :width, :int
87
+
88
+ hidden :refcount, :hdr_refcount
89
+ end
90
+
91
+ #
92
+ # IplImage
93
+ #
94
+ enum :IplDepth, [ :IPL_DEPTH_1U, 1,
95
+ :IPL_DEPTH_8U, 8,
96
+ :IPL_DEPTH_16U, 16,
97
+ :IPL_DEPTH_32F, 32 ]
98
+
99
+ class IplImage < NiceFFI::Struct
100
+ layout :nSize, :int,
101
+ :ID, :int,
102
+ :nChannels, :int,
103
+ :alphaChannel, :int,
104
+ :depth, :int,
105
+ :colorModel, [:char, 4],
106
+ :channelSeq, [:char, 4],
107
+ :dataOrder, :int,
108
+ :origin, :int,
109
+ :align, :int,
110
+ :width, :int,
111
+ :height, :int,
112
+ :roi, :pointer,
113
+ :maskROI, :pointer,
114
+ :imageId, :pointer,
115
+ :tileInfo, :pointer,
116
+ :imageSize, :int,
117
+ :imageData, :pointer,
118
+ :widthStep, :int,
119
+ :BorderMode, [:int, 4],
120
+ :imageDataOrigin, :pointer
121
+
122
+ # def self.release(ptr)
123
+ # p ptr
124
+ # CVFFI::cvReleaseData( ptr )
125
+ # end
126
+ end
127
+
128
+
129
+ #
130
+ # CvSeq and assoc
131
+ #
132
+ class CvSeqBlock < NiceFFI::Struct
133
+ layout :prev, NiceFFI::TypedPointer( CvSeqBlock ),
134
+ :next, NiceFFI::TypedPointer( CvSeqBlock ),
135
+ :start_index, :int,
136
+ :count, :int,
137
+ :data, :pointer
138
+ end
139
+
140
+ class CvMemBlock < NiceFFI::Struct
141
+ layout :prev, NiceFFI::TypedPointer( CvMemBlock ),
142
+ :next, NiceFFI::TypedPointer( CvMemBlock )
143
+ end
144
+
145
+ class CvMemStorage < NiceFFI::Struct
146
+ layout :signature, :int,
147
+ :bottom, NiceFFI::TypedPointer( CvMemBlock ),
148
+ :top, NiceFFI::TypedPointer( CvMemBlock ),
149
+ :parent, NiceFFI::TypedPointer( CvMemStorage ),
150
+ :block_size, :int,
151
+ :free_space, :int
152
+ end
153
+
154
+ class CvSeq < NiceFFI::Struct
155
+ layout :flags, :int,
156
+ :header_size, :int,
157
+ :h_prev, NiceFFI::TypedPointer( CvSeq ),
158
+ :h_next, NiceFFI::TypedPointer( CvSeq ),
159
+ :v_prev, NiceFFI::TypedPointer( CvSeq ),
160
+ :v_prev, NiceFFI::TypedPointer( CvSeq ),
161
+ :total, :int,
162
+ :elem_size, :int,
163
+ :block_max, :pointer,
164
+ :ptr, :pointer,
165
+ :delta_elems, :int,
166
+ :storage, NiceFFI::TypedPointer( CvMemStorage ),
167
+ :free_blocks, NiceFFI::TypedPointer( CvSeqBlock ),
168
+ :first, NiceFFI::TypedPointer( CvSeqBlock )
169
+ end
170
+
171
+ end
172
+
@@ -0,0 +1,8 @@
1
+
2
+ require 'nice-ffi'
3
+
4
+ module CVFFI
5
+ extend NiceFFI::Library
6
+
7
+ @pathset = NiceFFI::PathSet::DEFAULT.prepend( "#{ENV['HOME']}/usr/lib" )
8
+ end
@@ -0,0 +1,7 @@
1
+
2
+ require 'opencv-ffi/features2d/library'
3
+ require 'opencv-ffi/features2d/surf'
4
+ require 'opencv-ffi/features2d/star'
5
+
6
+ module CVFFI
7
+ end
@@ -0,0 +1,6 @@
1
+
2
+ require 'opencv-ffi/cvffi'
3
+
4
+ module CVFFI
5
+ load_library("opencv_features2d", @pathset)
6
+ end
@@ -0,0 +1,30 @@
1
+ require 'opencv-ffi/cvffi'
2
+ require 'opencv-ffi/core'
3
+ require 'opencv-ffi/features2d/library'
4
+
5
+ module CVFFI
6
+
7
+ class CvStarDetectorParams < NiceFFI::Struct
8
+ layout :maxSize, :int, # maximal size of the features
9
+ # detected. The following
10
+ # values of the parameter are supported:
11
+ # 4, 6, 8, 11, 12, 16, 22, 23, 32, 45, 46, 64, 90, 128
12
+ :responseThreshold, :int, # threshold for the approximatd laplacian,
13
+ # used to eliminate weak features
14
+ :lineThresholdProjected, :int, # another threshold for laplacian to
15
+ # eliminate edges
16
+ :lineThresholdBinarized, :int, # another threshold for the feature
17
+ # scale to eliminate edges
18
+ :suppressNonmaxSize, :int # linear size of a pixel neighborhood
19
+ # for non-maxima suppression
20
+ end
21
+
22
+ class CvStarKeypoint < NiceFFI::Struct
23
+ layout :pt, CvPoint,
24
+ :size, :int,
25
+ :response, :float
26
+ end
27
+
28
+ attach_function :cvGetStarKeypoints, [ :pointer, :pointer, CvStarDetectorParams.by_value ], CvSeq.typed_pointer
29
+
30
+ end
@@ -0,0 +1,38 @@
1
+
2
+ require 'opencv-ffi/cvffi'
3
+ require 'opencv-ffi/core'
4
+ require 'opencv-ffi/features2d/library'
5
+
6
+ module CVFFI
7
+
8
+
9
+ class CvSURFParams < NiceFFI::Struct
10
+ layout :extended, :int,
11
+ :upright, :int,
12
+ :hessianThreshold, :double,
13
+ :nOctaves, :int,
14
+ :nOctaveLayers, :int
15
+ end
16
+
17
+ class CvSURFPoint < NiceFFI::Struct
18
+ layout :pt, CvPoint2D32f,
19
+ :laplacian, :int,
20
+ :size, :int,
21
+ :dir, :float,
22
+ :hessian, :float
23
+ end
24
+
25
+ # CVAPI(void) cvExtractSURF( const CvArr* img,
26
+ # const CvArr* mask,
27
+ # CvSeq** keypoints,
28
+ # CvSeq** descriptors,
29
+ # CvMemStorage* storage,
30
+ # CvSURFParams params,
31
+ # int useProvidedKeyPts CV_DEFAULT(0) );
32
+
33
+ attach_function :cvExtractSURF, [ :pointer, :pointer,
34
+ :pointer, :pointer,
35
+ :pointer,
36
+ CvSURFParams.by_value, :cvBoolean ], :void
37
+
38
+ end
@@ -0,0 +1,31 @@
1
+
2
+ require 'nice-ffi'
3
+ require 'opencv-ffi/core'
4
+
5
+ module CVFFI
6
+ extend NiceFFI::Library
7
+
8
+ load_library("opencv_highgui", @pathset)
9
+
10
+ CV_LOAD_IMAGE_UNCHANGED =-1
11
+ CV_LOAD_IMAGE_GRAYSCALE = 0
12
+ CV_LOAD_IMAGE_COLOR = 1
13
+
14
+ attach_function :cvLoadImageMFull, :cvLoadImageM, [ :string, :int ], CvMat.typed_pointer
15
+ attach_function :cvLoadImageFull, :cvLoadImage, [ :string, :int ], IplImage.typed_pointer
16
+
17
+ def self.cvLoadImageM( fname, color = CV_LOAD_IMAGE_COLOR )
18
+ cvLoadImageMFull( fname, color )
19
+ end
20
+
21
+ def self.cvLoadImage( fname, color = CV_LOAD_IMAGE_COLOR )
22
+ cvLoadImageFull( fname, color )
23
+ end
24
+
25
+ attach_function :cvSaveImageFull, :cvSaveImage, [ :string, :pointer, :pointer ], :int
26
+
27
+ def self.cvSaveImage( name, ptr, params = nil )
28
+ cvSaveImageFull( name, ptr, params )
29
+ end
30
+
31
+ end
@@ -0,0 +1,9 @@
1
+
2
+ require 'opencv-ffi/cvffi'
3
+ require 'opencv-ffi/imgproc/misc'
4
+ require 'opencv-ffi/imgproc/geometric'
5
+ require 'opencv-ffi/imgproc/features'
6
+
7
+ module CVFFI
8
+
9
+ end
@@ -0,0 +1,37 @@
1
+
2
+ require 'opencv-ffi/imgproc/library'
3
+
4
+ module CVFFI
5
+
6
+ # CVAPI(void) cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image,
7
+ # CvArr* temp_image, CvPoint2D32f* corners,
8
+ # int* corner_count, double quality_level,
9
+ # double min_distance,
10
+ # const CvArr* mask CV_DEFAULT(NULL),
11
+ # int block_size CV_DEFAULT(3),
12
+ # int use_harris CV_DEFAULT(0),
13
+ # double k CV_DEFAULT(0.04) );
14
+ attach_function :real_cvGoodFeaturesToTrack, :cvGoodFeaturesToTrack,
15
+ [:pointer, :pointer, :pointer, :pointer, :pointer, :double, :double, :pointer, :int, :int, :double], :void
16
+
17
+ # This version diverges from the OpenCV API because the original returns
18
+ # an array of Point2D32f in corners ... this functions will provide
19
+ # is as a return value.
20
+ #
21
+ # @param max_corners The maximum number of corners to return
22
+ # @return An array of CvPoint2D32f giving the detected corners.
23
+ def self.cvGoodFeaturesToTrack( image, eig_image, temp_image, max_corners, quality_level, min_distance,
24
+ mask = nil, block_size = 3, use_harris = false, k = 0.04 )
25
+
26
+ corner_count_ptr = FFI::MemoryPointer.new :int
27
+ corner_count_ptr.write_int max_corners
28
+ corner_ptr = FFI::MemoryPointer.new CvPoint2D32f, max_corners
29
+ CVFFI::real_cvGoodFeaturesToTrack( image, eig_image, temp_image, corner_ptr, corner_count_ptr, quality_level, min_distance, mask, block_size, use_harris ? 1 : 0, k )
30
+
31
+ corner_count = corner_count_ptr.read_int
32
+ corners = Array.new( corner_count ) { |i|
33
+ CvPoint2D32f.new( corner_ptr[i] )
34
+ }
35
+ end
36
+
37
+ end
@@ -0,0 +1,42 @@
1
+
2
+
3
+ require 'opencv-ffi/core/types'
4
+ require 'opencv-ffi/imgproc/library'
5
+
6
+ module CVFFI
7
+
8
+ attach_function :cvGetAffineTransform, [ :pointer, :pointer, :pointer ], CvMat.typed_pointer
9
+
10
+ @cvWarpFlags = enum :cvWarpFlags, [ :CV_INTER_LINEAR, 1,
11
+ :CV_WARP_FILL_OUTLIERS, 8,
12
+ :CV_WARP_INVERSE_MAP, 16 ]
13
+
14
+ def self.cv_warp_flags_to_i( a )
15
+ if @cvWarpFlags.symbols.include? a
16
+ @cvWarpFlags[a]
17
+ else
18
+ raise ::RuntimeError, "Undefined cvWarpFlags value #{a.inspect}"
19
+ end
20
+ end
21
+
22
+ # CVAPI(void) cvWarpAffine( const CvArr* src,
23
+ # CvArr* dst,
24
+ # const CvMat* map_matrix,
25
+ # int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
26
+ # CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
27
+ attach_function :cvWarpAffineReal, :cvWarpAffine, [ :pointer, :pointer, :pointer, :int, CvScalar.by_value ], :void
28
+
29
+ def self.cvWarpAffine( src, dst, map_matrix, flags = nil, fillval = nil )
30
+ flags ||= @cvWarpFlags[:CV_INTER_LINEAR]+@cvWarpFlags[:CV_WARP_FILL_OUTLIERS]
31
+ fillval ||= CVFFI::CvScalar.new( [0,0,0,0] )
32
+
33
+ cvWarpAffineReal( src,dst,map_matrix,flags,fillval )
34
+ end
35
+
36
+
37
+ # CVAPI(CvMat*) cv2DRotationMatrix( CvPoint2D32f center,
38
+ # double angle,
39
+ # double scale,
40
+ # CvMat* map_matrix );
41
+ attach_function :cv2DRotationMatrix, [ CvPoint2D32f.by_value, :double, :double, :pointer ], :void
42
+ end
@@ -0,0 +1,6 @@
1
+ require 'opencv-ffi/cvffi'
2
+
3
+ module CVFFI
4
+ load_library("opencv_imgproc", @pathset)
5
+ end
6
+
@@ -0,0 +1,39 @@
1
+
2
+ require 'opencv-ffi/imgproc/library'
3
+
4
+ module CVFFI
5
+
6
+ enum :cvCvtCodes, [ :CV_RGB2RGB, 0,
7
+ :CV_BGR2BGRA, 0,
8
+ :CV_RGBA2RGB,
9
+ :CV_BGRA2BGR, 1,
10
+ :CV_RGB2BGRA,
11
+ :CV_BGR2RGBA, 2,
12
+ :CV_RGBA2BGR,
13
+ :CV_BGRA2RGB, 3,
14
+ :CV_BGR2RGB,
15
+ :CV_RGB2BGR, 4,
16
+ :CV_BGRA2RGBA,
17
+ :CV_RGBA2BGRA, 5,
18
+ :CV_BGR2GRAY,
19
+ :CV_RGB2GRAY,
20
+ :CV_GRAY2BGR,
21
+ :CV_GRAY2RGB, 8,
22
+ :CV_GRAY2BGRA,
23
+ :CV_GRAY2RGBA, 9,
24
+ :CV_BGRA2GRAY,
25
+ :CV_RGBA2GRAYa ]
26
+
27
+ attach_function :cvCvtColor, [ :pointer, :pointer, :cvCvtCodes ], :void
28
+
29
+
30
+ enum :cvInterpolation, [ :CV_INTER_NN, 0,
31
+ :CV_INTER_LINEAR,
32
+ :CV_INTER_CUBIC,
33
+ :CV_INTER_AREA,
34
+ :CV_INTER_LANCZOS4 ]
35
+
36
+ attach_function :cvResize, [ :pointer, :pointer, :cvInterpolation ], :void
37
+
38
+
39
+ end