mirror of
https://github.com/ruby-opencv/ruby-opencv
synced 2023-03-27 23:22:12 -04:00
use CV_INTER_* constants instead of INTERPOLATION_METHOD table
This commit is contained in:
parent
08348ff8d3
commit
cbeeb1caee
3 changed files with 30 additions and 35 deletions
|
@ -3915,14 +3915,14 @@ rb_quadrangle_sub_pix(int argc, VALUE *argv, VALUE self)
|
|||
*
|
||||
* Resize image.
|
||||
* <i>interpolation</i> is interpolation method:
|
||||
* * :nn
|
||||
* * CV_INTER_NN
|
||||
* nearest-neighbor interpolation.
|
||||
* * :linear
|
||||
* * CV_INTER_LINEAR
|
||||
* bilinear interpolation (used by default)
|
||||
* * :area
|
||||
* * CV_INTER_AREA
|
||||
* resampling using pixel area relation. It is preferred method for image decimation that give moire-free results.
|
||||
* In case of zooming it is similar to NN method.
|
||||
* * :cubic
|
||||
* * CV_INTER_CUBIC
|
||||
* bicubic interpolation.
|
||||
* Return <i>self</i> resized image that it fits exactly to <i>size</i>. If ROI is set, the method consideres the ROI as supported as usual.
|
||||
*/
|
||||
|
@ -3932,8 +3932,10 @@ rb_resize(int argc, VALUE *argv, VALUE self)
|
|||
VALUE size, interpolation;
|
||||
rb_scan_args(argc, argv, "11", &size, &interpolation);
|
||||
VALUE dest = new_mat_kind_object(VALUE_TO_CVSIZE(size), self);
|
||||
int method = NIL_P(interpolation) ? CV_INTER_LINEAR : NUM2INT(interpolation);
|
||||
|
||||
try {
|
||||
cvResize(CVARR(self), CVARR(dest), CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR));
|
||||
cvResize(CVARR(self), CVARR(dest), method);
|
||||
}
|
||||
catch (cv::Exception& e) {
|
||||
raise_cverror(e);
|
||||
|
@ -3943,7 +3945,7 @@ rb_resize(int argc, VALUE *argv, VALUE self)
|
|||
|
||||
/*
|
||||
* call-seq:
|
||||
* warp_affine(<i>map_matrix[,interpolation = :linear][,option = :fill_outliers][,fillval = 0]</i>) -> cvmat
|
||||
* warp_affine(<i>map_matrix[,interpolation = CV_INTER_LINEAR][,option = :fill_outliers][,fillval = 0]</i>) -> cvmat
|
||||
*
|
||||
* Applies affine transformation to the image.
|
||||
*/
|
||||
|
@ -3955,11 +3957,12 @@ rb_warp_affine(int argc, VALUE *argv, VALUE self)
|
|||
if (rb_scan_args(argc, argv, "13", &map_matrix, &interpolation, &option, &fill_value) < 4)
|
||||
fill_value = INT2FIX(0);
|
||||
CvArr* self_ptr = CVARR(self);
|
||||
int method = NIL_P(interpolation) ? CV_INTER_LINEAR : NUM2INT(interpolation);
|
||||
try {
|
||||
dest = new_mat_kind_object(cvGetSize(self_ptr), self);
|
||||
cvWarpAffine(self_ptr, CVARR(dest), CVMAT_WITH_CHECK(map_matrix),
|
||||
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR)
|
||||
| CVMETHOD("WARP_FLAG", option, CV_WARP_FILL_OUTLIERS), VALUE_TO_CVSCALAR(fill_value));
|
||||
method | CVMETHOD("WARP_FLAG", option, CV_WARP_FILL_OUTLIERS),
|
||||
VALUE_TO_CVSCALAR(fill_value));
|
||||
}
|
||||
catch (cv::Exception& e) {
|
||||
raise_cverror(e);
|
||||
|
@ -4047,7 +4050,7 @@ rb_rotation_matrix2D(VALUE self, VALUE center, VALUE angle, VALUE scale)
|
|||
|
||||
/*
|
||||
* call-seq:
|
||||
* warp_perspective(<i>map_matrix[,interpolation=:linear][,option =:fill_outliers][,fillval=0])</i>) -> cvmat
|
||||
* warp_perspective(<i>map_matrix[,interpolation=CV_INTER_LINEAR][,option =:fill_outliers][,fillval=0])</i>) -> cvmat
|
||||
*
|
||||
* Applies perspective transformation to the image.
|
||||
*/
|
||||
|
@ -4059,11 +4062,11 @@ rb_warp_perspective(int argc, VALUE *argv, VALUE self)
|
|||
fillval = INT2FIX(0);
|
||||
CvArr* self_ptr = CVARR(self);
|
||||
VALUE dest = Qnil;
|
||||
int method = NIL_P(interpolation) ? CV_INTER_LINEAR : NUM2INT(interpolation);
|
||||
try {
|
||||
dest = new_mat_kind_object(cvGetSize(self_ptr), self);
|
||||
cvWarpPerspective(self_ptr, CVARR(dest), CVMAT_WITH_CHECK(map_matrix),
|
||||
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR)
|
||||
| CVMETHOD("WARP_FLAG",option, CV_WARP_FILL_OUTLIERS),
|
||||
method | CVMETHOD("WARP_FLAG",option, CV_WARP_FILL_OUTLIERS),
|
||||
VALUE_TO_CVSCALAR(fillval));
|
||||
}
|
||||
catch (cv::Exception& e) {
|
||||
|
@ -4074,7 +4077,7 @@ rb_warp_perspective(int argc, VALUE *argv, VALUE self)
|
|||
|
||||
/*
|
||||
* call-seq:
|
||||
* remap(<i>mapx,mapy[,interpolation=:linear][,option=:fill_outliers][,fillval=0]</i>) -> cvmat
|
||||
* remap(<i>mapx,mapy[,interpolation=CV_INTER_LINEAR][,option=:fill_outliers][,fillval=0]</i>) -> cvmat
|
||||
*
|
||||
* Applies generic geometrical transformation to the image.
|
||||
* Transforms source image using the specified map:
|
||||
|
@ -4090,11 +4093,11 @@ rb_remap(int argc, VALUE *argv, VALUE self)
|
|||
fillval = INT2FIX(0);
|
||||
CvArr* self_ptr = CVARR(self);
|
||||
VALUE dest = Qnil;
|
||||
int method = NIL_P(interpolation) ? CV_INTER_LINEAR : NUM2INT(interpolation);
|
||||
try {
|
||||
dest = new_mat_kind_object(cvGetSize(self_ptr), self);
|
||||
cvRemap(self_ptr, CVARR(dest), CVARR_WITH_CHECK(mapx), CVARR_WITH_CHECK(mapy),
|
||||
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR)
|
||||
| CVMETHOD("WARP_FLAG", option, CV_WARP_FILL_OUTLIERS),
|
||||
method | CVMETHOD("WARP_FLAG", option, CV_WARP_FILL_OUTLIERS),
|
||||
VALUE_TO_CVSCALAR(fillval));
|
||||
}
|
||||
catch (cv::Exception& e) {
|
||||
|
|
|
@ -345,14 +345,6 @@ define_ruby_module()
|
|||
REGISTER_CVMETHOD(inversion_method, "svd_sym", CV_SVD_SYM);
|
||||
REGISTER_CVMETHOD(inversion_method, "svd_symmetric", CV_SVD_SYM);
|
||||
|
||||
VALUE interpolation_method = rb_hash_new();
|
||||
/* {:nn, :linear, :area, :cubic}: Interpolation method */
|
||||
rb_define_const(rb_module, "INTERPOLATION_METHOD", interpolation_method);
|
||||
REGISTER_CVMETHOD(interpolation_method, "nn", CV_INTER_NN);
|
||||
REGISTER_CVMETHOD(interpolation_method, "linear", CV_INTER_LINEAR);
|
||||
REGISTER_CVMETHOD(interpolation_method, "area", CV_INTER_AREA);
|
||||
REGISTER_CVMETHOD(interpolation_method, "cubic", CV_INTER_CUBIC);
|
||||
|
||||
VALUE warp_flag = rb_hash_new();
|
||||
/* {:fill_outliers, :inverse_map}: Warp affine optional flags */
|
||||
rb_define_const(rb_module, "WARP_FLAG", warp_flag);
|
||||
|
|
|
@ -388,10 +388,10 @@ class TestCvMat_imageprocessing < OpenCVTestCase
|
|||
size_512 = CvSize.new(512, 512)
|
||||
size_128 = CvSize.new(128, 128)
|
||||
mat1 = mat0.resize(size_512)
|
||||
mat2 = mat0.resize(size_512, :linear)
|
||||
mat3 = mat0.resize(size_512, :nn)
|
||||
mat4 = mat0.resize(size_128, :area)
|
||||
mat5 = mat0.resize(size_128, :cubic)
|
||||
mat2 = mat0.resize(size_512, CV_INTER_LINEAR)
|
||||
mat3 = mat0.resize(size_512, CV_INTER_NN)
|
||||
mat4 = mat0.resize(size_128, CV_INTER_AREA)
|
||||
mat5 = mat0.resize(size_128, CV_INTER_CUBIC)
|
||||
mat6 = mat0.clone
|
||||
|
||||
assert_equal('b2203ccca2c17b042a90b79704c0f535', hash_img(mat1))
|
||||
|
@ -420,9 +420,9 @@ class TestCvMat_imageprocessing < OpenCVTestCase
|
|||
map_matrix[5] = CvScalar.new(66.08774)
|
||||
|
||||
mat1 = mat0.warp_affine(map_matrix)
|
||||
mat2 = mat0.warp_affine(map_matrix, :nn)
|
||||
mat3 = mat0.warp_affine(map_matrix, :linear, :fill_outliers, CvColor::Yellow)
|
||||
mat4 = mat0.warp_affine(map_matrix, :linear, :inverse_map)
|
||||
mat2 = mat0.warp_affine(map_matrix, CV_INTER_NN)
|
||||
mat3 = mat0.warp_affine(map_matrix, CV_INTER_LINEAR, :fill_outliers, CvColor::Yellow)
|
||||
mat4 = mat0.warp_affine(map_matrix, CV_INTER_LINEAR, :inverse_map)
|
||||
|
||||
assert_equal('da3d7cdefabbaf84c4080ecd40d00897', hash_img(mat1))
|
||||
assert_equal('b4abcd12c4e1103c3de87bf9ad854936', hash_img(mat2))
|
||||
|
@ -483,9 +483,9 @@ class TestCvMat_imageprocessing < OpenCVTestCase
|
|||
map_matrix[8] = CvScalar.new(1.00000)
|
||||
|
||||
mat1 = mat0.warp_perspective(map_matrix)
|
||||
mat2 = mat0.warp_perspective(map_matrix, :nn)
|
||||
mat3 = mat0.warp_perspective(map_matrix, :linear, :inverse_map)
|
||||
mat4 = mat0.warp_perspective(map_matrix, :linear, :fill_outliers, CvColor::Yellow)
|
||||
mat2 = mat0.warp_perspective(map_matrix, CV_INTER_NN)
|
||||
mat3 = mat0.warp_perspective(map_matrix, CV_INTER_LINEAR, :inverse_map)
|
||||
mat4 = mat0.warp_perspective(map_matrix, CV_INTER_LINEAR, :fill_outliers, CvColor::Yellow)
|
||||
|
||||
assert_equal('bba3a5395f9dd9a400a0083ae74d8986', hash_img(mat1))
|
||||
assert_equal('a0cc4f329f459410293b75b417fc4f25', hash_img(mat2))
|
||||
|
@ -522,8 +522,8 @@ class TestCvMat_imageprocessing < OpenCVTestCase
|
|||
}
|
||||
|
||||
mat1 = mat0.remap(matx, maty)
|
||||
mat2 = mat0.remap(matx, maty, :nn)
|
||||
mat3 = mat0.remap(matx, maty, :linear, :fill_outliers, CvColor::Yellow)
|
||||
mat2 = mat0.remap(matx, maty, CV_INTER_NN)
|
||||
mat3 = mat0.remap(matx, maty, CV_INTER_LINEAR, :fill_outliers, CvColor::Yellow)
|
||||
|
||||
assert_equal('586716c0262a3e03a54b9fc6e671e5f7', hash_img(mat1))
|
||||
assert_equal('5461ecdee23d5e8a9099500d631c9f0f', hash_img(mat2))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue