1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00

modified some methods of CvMat to adapt them to IplImage

This commit is contained in:
ser1zw 2011-05-28 20:17:22 +09:00
parent 4fb3d87dd3
commit 63666f47f1

View file

@ -707,10 +707,10 @@ rb_copy(int argc, VALUE *argv, VALUE self)
{
VALUE value, copied;
CvMat *src = CVMAT(self);
CvSize size = cvGetSize(src);
rb_scan_args(argc, argv, "01", &value);
if (argc == 0) {
CvSize size = cvGetSize(src);
copied = new_object(cvGetSize(src), cvGetElemType(src));
copied = new_mat_kind_object(size, self);
cvCopy(src, CVMAT(copied));
return copied;
}
@ -724,7 +724,7 @@ rb_copy(int argc, VALUE *argv, VALUE self)
if (n > 0) {
copied = rb_ary_new2(n);
for (int i = 0; i < n; i++) {
VALUE tmp = new_object(src->rows, src->cols, cvGetElemType(src));
VALUE tmp = new_mat_kind_object(size, self);
cvCopy(src, CVMAT(tmp));
rb_ary_store(copied, i, tmp);
}
@ -1581,6 +1581,7 @@ rb_merge(VALUE klass, VALUE args)
}else
rb_raise(rb_eTypeError, "argument should be CvMat or subclass of it.");
}
// TODO: adapt IplImage
dest = new_object(cvGetSize(tmp), CV_MAKETYPE(CV_MAT_DEPTH(tmp->type), len));
cvMerge(src[0], src[1], src[2], src[3], CVARR(dest));
return dest;
@ -1673,6 +1674,7 @@ rb_convert_scale(VALUE self, VALUE hash)
VALUE depth = rb_hash_aref(hash, ID2SYM(rb_intern("depth"))),
scale = rb_hash_aref(hash, ID2SYM(rb_intern("scale"))),
shift = rb_hash_aref(hash, ID2SYM(rb_intern("shift"))),
// TODO: adapt IplImage
dest = new_object(cvGetSize(CVARR(self)), CV_MAKETYPE(CVMETHOD("DEPTH", depth, CV_MAT_DEPTH(CVMAT(self)->type)), CV_MAT_CN(CVMAT(self)->type)));
cvConvertScale(CVARR(self), CVARR(dest), IF_DBL(scale, 1.0), IF_DBL(shift, 0.0));
return dest;
@ -1694,6 +1696,7 @@ rb_convert_scale_abs(VALUE self, VALUE hash)
VALUE
scale = rb_hash_aref(hash, ID2SYM(rb_intern("scale"))),
shift = rb_hash_aref(hash, ID2SYM(rb_intern("shift"))),
// TODO: adapt IplImage
dest = new_object(cvGetSize(CVARR(self)), CV_MAKETYPE(CV_8U, CV_MAT_CN(CVMAT(self)->type)));
cvConvertScaleAbs(CVARR(self), CVARR(dest), IF_DBL(scale, 1.0), IF_DBL(shift, 0.0));
return dest;
@ -1766,7 +1769,7 @@ rb_mul(int argc, VALUE *argv, VALUE self)
VALUE val, scale, dest;
if (rb_scan_args(argc, argv, "11", &val, &scale) < 2)
scale = rb_float_new(1.0);
dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
if (rb_obj_is_kind_of(val, rb_klass)) {
cvMul(CVARR(self), CVARR(val), CVARR(dest), NUM2DBL(scale));
}else{
@ -1792,7 +1795,7 @@ rb_mat_mul(int argc, VALUE *argv, VALUE self)
{
VALUE val, shiftvec, dest;
rb_scan_args(argc, argv, "11", &val, &shiftvec);
dest = new_object(CVMAT(self)->rows, CVMAT(val)->cols, cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
if (NIL_P(shiftvec))
cvMatMul(CVARR(self), CVARR(val), CVARR(dest));
else
@ -1816,12 +1819,12 @@ rb_div(int argc, VALUE *argv, VALUE self)
VALUE val, scale, dest;
if (rb_scan_args(argc, argv, "11", &val, &scale) < 2)
scale = rb_float_new(1.0);
dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
if (rb_obj_is_kind_of(val, rb_klass)) {
cvDiv(CVARR(self), CVARR(val), CVARR(dest), NUM2DBL(scale));
}else{
CvScalar scl = VALUE_TO_CVSCALAR(val);
VALUE mat = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE mat = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvSet(CVARR(mat), scl);
cvDiv(CVARR(self), CVARR(mat), CVARR(dest), NUM2DBL(scale));
}
@ -1928,6 +1931,7 @@ rb_not_bang(VALUE self)
VALUE
rb_cmp_internal(VALUE self, VALUE val, int operand)
{
// TODO: adapt IplImage
VALUE dest = new_object(cvGetSize(CVARR(self)), CV_8U);
if (rb_obj_is_kind_of(val, rb_klass))
cvCmp(CVARR(self), CVARR(val), CVARR(dest), operand);
@ -2031,7 +2035,7 @@ rb_ne(VALUE self, VALUE val)
VALUE
rb_in_range(VALUE self, VALUE min, VALUE max)
{
VALUE dest = dest = new_object(cvGetSize(CVARR(self)), CV_8UC1), tmp;
VALUE dest = new_object(cvGetSize(CVARR(self)), CV_8UC1), tmp;
if (rb_obj_is_kind_of(min, rb_klass) && rb_obj_is_kind_of(max, rb_klass)) {
cvInRange(CVARR(self), CVARR(min), CVARR(max), CVARR(dest));
}else if (rb_obj_is_kind_of(min, rb_klass)) {
@ -2058,7 +2062,7 @@ rb_in_range(VALUE self, VALUE min, VALUE max)
VALUE
rb_abs_diff(VALUE self, VALUE val)
{
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
if (rb_obj_is_kind_of(val, rb_klass)) {
cvAbsDiff(CVARR(self), CVARR(val), CVARR(dest));
}else{
@ -2200,7 +2204,7 @@ rb_cross_product(VALUE self, VALUE mat)
{
if (!rb_obj_is_kind_of(mat, rb_klass))
rb_raise(rb_eTypeError, "argument should be CvMat.");
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvCrossProduct(CVARR(self), CVARR(mat), CVARR(dest));
return dest;
}
@ -2217,7 +2221,7 @@ rb_transform(int argc, VALUE *argv, VALUE self)
{
VALUE transmat, shiftvec;
rb_scan_args(argc, argv, "11", &transmat, &shiftvec);
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
if (NIL_P(shiftvec))
cvTransform(CVARR(self), CVARR(dest), CVMAT(transmat), NULL);
else
@ -2243,7 +2247,7 @@ rb_transform(int argc, VALUE *argv, VALUE self)
VALUE
rb_perspective_transform(VALUE self, VALUE mat)
{
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvPerspectiveTransform(CVARR(self), CVARR(dest), CVMAT(mat));
return dest;
}
@ -2300,8 +2304,7 @@ rb_trace(VALUE self)
VALUE
rb_transpose(VALUE self)
{
CvSize size = cvGetSize(CVARR(self));
VALUE dest = new_object(size.width, size.height, cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvTranspose(CVARR(self), CVARR(dest));
return dest;
}
@ -2358,7 +2361,7 @@ rb_invert(int argc, VALUE *argv, VALUE self)
VALUE symbol;
rb_scan_args(argc, argv, "01", &symbol);
int method = CVMETHOD("INVERSION_METHOD", symbol, CV_LU);
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvInvert(CVARR(self), CVARR(dest), method);
return dest;
}
@ -2387,7 +2390,7 @@ rb_solve(int argc, VALUE *argv, VALUE self)
rb_scan_args(argc, argv, "11", &mat, &symbol);
if (!rb_obj_is_kind_of(mat, rb_klass))
rb_raise(rb_eTypeError, "argument 1 (right-hand part of the linear system) should be %s.)", rb_class2name(rb_klass));
VALUE dest = new_object(CVMAT(self)->rows, CVMAT(mat)->cols, cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(mat)), self);
cvSolve(CVARR(self), CVARR(mat), CVARR(dest), CVMETHOD("INVERSION_METHOD", symbol, CV_LU));
return dest;
}
@ -2516,7 +2519,7 @@ rb_dft(int argc, VALUE *argv, VALUE self)
type |= CVMETHOD("DXT_FLAG", argv[i]);
}
}
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvDFT(CVARR(self), CVARR(dest), type, num_rows);
return dest;
}
@ -2544,7 +2547,7 @@ rb_dct(int argc, VALUE *argv, VALUE self)
type |= CVMETHOD("DXT_FLAG", argv[i]);
}
}
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvDCT(CVARR(self), CVARR(dest), type);
return dest;
}
@ -3058,6 +3061,7 @@ rb_sobel(int argc, VALUE *argv, VALUE self)
aperture_size = INT2FIX(3);
switch(CV_MAT_DEPTH(CVMAT(self)->type)) {
case CV_8U:
// TODO: adapt IplImage
dest = new_object(cvGetSize(CVARR(self)), CV_MAKETYPE(CV_16S, 1));
break;
case CV_32F:
@ -3085,6 +3089,7 @@ rb_laplace(int argc, VALUE *argv, VALUE self)
aperture_size = INT2FIX(3);
switch(CV_MAT_DEPTH(CVMAT(self)->type)) {
case CV_8U:
// TODO: adapt IplImage
dest = new_object(cvGetSize(CVARR(self)), CV_MAKETYPE(CV_16S, 1));
break;
case CV_32F:
@ -3109,7 +3114,7 @@ rb_canny(int argc, VALUE *argv, VALUE self)
VALUE thresh1, thresh2, aperture_size;
if (rb_scan_args(argc, argv, "21", &thresh1, &thresh2, &aperture_size) < 3)
aperture_size = INT2FIX(3);
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvCanny(CVARR(self), CVARR(dest), NUM2INT(thresh1), NUM2INT(thresh2), NUM2INT(aperture_size));
return dest;
}
@ -3377,7 +3382,7 @@ rb_resize(int argc, VALUE *argv, VALUE self)
{
VALUE size, interpolation;
rb_scan_args(argc, argv, "11", &size, &interpolation);
VALUE dest = new_object(VALUE_TO_CVSIZE(size), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(VALUE_TO_CVSIZE(size), self);
cvResize(CVARR(self), CVARR(dest), CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR));
return dest;
}
@ -3396,7 +3401,7 @@ rb_warp_affine(int argc, VALUE *argv, VALUE self)
fill_value = INT2FIX(0);
if (!rb_obj_is_kind_of(map_matrix, cCvMat::rb_class()))
rb_raise(rb_eTypeError, "argument 1 (map matrix) should be %s (2x3).", rb_class2name(cCvMat::rb_class()));
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvWarpAffine(CVARR(self), CVARR(dest), CVMAT(map_matrix),
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR) | CVMETHOD("WARP_FLAG", option, CV_WARP_FILL_OUTLIERS), VALUE_TO_CVSCALAR(fill_value));
return dest;
@ -3479,9 +3484,10 @@ rb_warp_perspective(int argc, VALUE *argv, VALUE self)
fillval = INT2FIX(0);
if (!rb_obj_is_kind_of(map_matrix, cCvMat::rb_class()))
rb_raise(rb_eTypeError, "argument 1 (map matrix) should be %s (3x3).", rb_class2name(cCvMat::rb_class()));
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvWarpPerspective(CVARR(self), CVARR(dest), CVMAT(map_matrix),
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR) | CVMETHOD("WARP_FLAG",option, CV_WARP_FILL_OUTLIERS), VALUE_TO_CVSCALAR(fillval));
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR)
| CVMETHOD("WARP_FLAG",option, CV_WARP_FILL_OUTLIERS), VALUE_TO_CVSCALAR(fillval));
return dest;
}
@ -3505,7 +3511,7 @@ rb_remap(int argc, VALUE *argv, VALUE self)
rb_raise(rb_eTypeError, "argument 1 (map of x-coordinates) should be %s(CV_32F and single-channel).", rb_class2name(cCvMat::rb_class()));
if (!rb_obj_is_kind_of(mapy, cCvMat::rb_class()))
rb_raise(rb_eTypeError, "argument 2 (map of y-coordinates) should be %s(CV_32F and single-channel).", rb_class2name(cCvMat::rb_class()));
VALUE dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvRemap(CVARR(self), CVARR(dest), CVARR(mapx), CVARR(mapy),
CVMETHOD("INTERPOLATION_METHOD", interpolation, CV_INTER_LINEAR) | CVMETHOD("WARP_FLAG", option, CV_WARP_FILL_OUTLIERS), VALUE_TO_CVSCALAR(fillval));
return dest;
@ -3599,7 +3605,7 @@ rb_morphology_internal(VALUE element, VALUE iteration, int operation, VALUE self
{
CvArr* self_ptr = CVARR(self);
CvSize size = cvGetSize(self_ptr);
VALUE dest = new_object(size, cvGetElemType(self_ptr));
VALUE dest = new_mat_kind_object(size, self);
if (operation == CV_MOP_GRADIENT) {
CvMat* temp = rb_cvCreateMat(size.height, size.width, cvGetElemType(self_ptr));
cvMorphologyEx(self_ptr, CVARR(dest), temp, IPLCONVKERNEL(element), CV_MOP_GRADIENT, IF_INT(iteration, 1));
@ -3764,6 +3770,7 @@ rb_smooth_blur_no_scale(int argc, VALUE *argv, VALUE self)
default:
rb_raise(rb_eNotImpError, "unsupport format. (support 8bit unsigned/signed or 32bit floating point only)");
}
// TODO: adapt IplImage
dest = new_object(cvGetSize(CVARR(self)), dest_type);
cvSmooth(CVARR(self), CVARR(dest), CV_BLUR_NO_SCALE, IF_INT(p1, 3), IF_INT(p2, 3));
return dest;
@ -3782,7 +3789,7 @@ rb_smooth_blur(int argc, VALUE *argv, VALUE self)
SUPPORT_C1C3_ONLY(self);
VALUE p1, p2, dest;
rb_scan_args(argc, argv, "02", &p1, &p2);
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvSmooth(CVARR(self), CVARR(dest), CV_BLUR, IF_INT(p1, 3), IF_INT(p2, 3));
return dest;
}
@ -3808,7 +3815,7 @@ rb_smooth_gaussian(int argc, VALUE *argv, VALUE self)
SUPPORT_C1C3_ONLY(self);
VALUE p1, p2, p3, p4, dest;
rb_scan_args(argc, argv, "04", &p1, &p2, &p3, &p4);
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvSmooth(CVARR(self), CVARR(dest), CV_GAUSSIAN, IF_INT(p1, 3), IF_INT(p2, 3), IF_DBL(p3, 0.0), IF_DBL(p4, 0.0));
return dest;
}
@ -3827,7 +3834,7 @@ rb_smooth_median(int argc, VALUE *argv, VALUE self)
SUPPORT_C1C3_ONLY(self);
VALUE p1, dest;
rb_scan_args(argc, argv, "01", &p1);
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvSmooth(CVARR(self), CVARR(dest), CV_MEDIAN, IF_INT(p1, 3));
return dest;
}
@ -3846,7 +3853,7 @@ rb_smooth_bilateral(int argc, VALUE *argv, VALUE self)
SUPPORT_C1C3_ONLY(self);
VALUE p1, p2, dest;
rb_scan_args(argc, argv, "02", &p1, &p2);
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvSmooth(CVARR(self), CVARR(dest), CV_BILATERAL, IF_INT(p1, 3), IF_INT(p2, 3));
return dest;
}
@ -3868,7 +3875,7 @@ rb_filter2d(int argc, VALUE *argv, VALUE self)
if (!rb_obj_is_kind_of(kernel, cCvMat::rb_class()))
rb_raise(rb_eTypeError, "argument 1 (kernel) should be %s.", rb_class2name(cCvMat::rb_class()));
int type = cvGetElemType(CVARR(kernel));
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvFilter2D(CVARR(self), CVARR(dest), CVMAT(kernel), NIL_P(anchor) ? cvPoint(-1,-1) : VALUE_TO_CVPOINT(anchor));
return dest;
}
@ -3885,7 +3892,7 @@ rb_copy_make_border_constant(int argc, VALUE *argv, VALUE self)
{
VALUE size, offset, value, dest;
rb_scan_args(argc, argv, "21", &size, &offset, &value);
dest = cCvMat::new_object(VALUE_TO_CVSIZE(size), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(VALUE_TO_CVSIZE(size), self);
cvCopyMakeBorder(CVARR(self), CVARR(dest), VALUE_TO_CVPOINT(offset), IPL_BORDER_CONSTANT, NIL_P(value) ? cvScalar(0) : VALUE_TO_CVSCALAR(value));
return dest;
}
@ -3903,7 +3910,7 @@ rb_copy_make_border_replicate(int argc, VALUE *argv, VALUE self)
{
VALUE size, offset, dest;
rb_scan_args(argc, argv, "20", &size, &offset);
dest = cCvMat::new_object(VALUE_TO_CVSIZE(size), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(VALUE_TO_CVSIZE(size), self);
cvCopyMakeBorder(CVARR(self), CVARR(dest), VALUE_TO_CVPOINT(offset), IPL_BORDER_REPLICATE);
return dest;
}
@ -3932,7 +3939,8 @@ rb_integral(int argc, VALUE *argv, VALUE self)
sum = cCvMat::new_object(size, CV_MAKETYPE(CV_64F, cn));
sqsum = (sqsum == Qtrue ? cCvMat::new_object(size, CV_MAKETYPE(CV_64F, cn)) : Qnil);
tilted_sum = (tilted_sum == Qtrue ? cCvMat::new_object(size, CV_MAKETYPE(CV_64F, cn)) : Qnil);
cvIntegral(CVARR(self), CVARR(sum), NIL_P(sqsum) ? NULL : CVARR(sqsum), NIL_P(tilted_sum) ? NULL : CVARR(tilted_sum));
cvIntegral(CVARR(self), CVARR(sum), NIL_P(sqsum) ? NULL : CVARR(sqsum),
NIL_P(tilted_sum) ? NULL : CVARR(tilted_sum));
dest = rb_ary_new3(1, sum);
if(sqsum)
rb_ary_push(dest, sqsum);
@ -3945,7 +3953,7 @@ VALUE
rb_threshold_internal(int threshold_type, VALUE threshold, VALUE max_value, VALUE use_otsu, VALUE self)
{
CvArr* self_ptr = CVARR(self);
VALUE dest = cCvMat::new_object(cvGetSize(self_ptr), cvGetElemType(self_ptr));
VALUE dest = new_mat_kind_object(cvGetSize(self_ptr), self);
int otsu = (use_otsu == Qtrue) && ((threshold_type & CV_THRESH_OTSU) == 0);
int type = threshold_type | (otsu ? CV_THRESH_OTSU : 0);
double otsu_threshold = cvThreshold(self_ptr, CVARR(dest), NUM2DBL(threshold), NUM2DBL(max_value), type);
@ -4087,8 +4095,9 @@ rb_pyr_down(int argc, VALUE *argv, VALUE self)
rb_raise(rb_eArgError, "argument 1 (filter_type) should be Symbol.");
}
}
CvSize size = cvGetSize(CVARR(self));
dest = cCvMat::new_object(size.height / 2, size.width / 2, cvGetElemType(CVARR(self)));
CvSize original_size = cvGetSize(CVARR(self));
CvSize size = { original_size.width >> 1, original_size.height >> 1 };
dest = new_mat_kind_object(size, self);
cvPyrDown(CVARR(self), CVARR(dest), filter);
return dest;
}
@ -4120,8 +4129,9 @@ rb_pyr_up(int argc, VALUE *argv, VALUE self)
rb_raise(rb_eArgError, "argument 1 (filter_type) should be Symbol.");
}
}
CvSize size = cvGetSize(CVARR(self));
dest = cCvMat::new_object(size.height * 2, size.width * 2, cvGetElemType(CVARR(self)));
CvSize original_size = cvGetSize(CVARR(self));
CvSize size = { original_size.width << 1, original_size.height << 1 };
dest = new_mat_kind_object(size, self);
cvPyrUp(CVARR(self), CVARR(dest), filter);
return dest;
}
@ -4375,7 +4385,7 @@ rb_pyr_mean_shift_filtering(int argc, VALUE *argv, VALUE self)
{
VALUE spatial_window_radius, color_window_radius, max_level, termcrit, dest;
rb_scan_args(argc, argv, "22", &spatial_window_radius, &color_window_radius, &max_level, &termcrit);
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvPyrMeanShiftFiltering(CVARR(self), CVARR(dest),
NUM2DBL(spatial_window_radius),
NUM2DBL(color_window_radius),
@ -4594,7 +4604,7 @@ rb_inpaint(VALUE self, VALUE inpaint_method, VALUE mask, VALUE radius)
int method = CVMETHOD("INPAINT_METHOD", inpaint_method, INVALID_TYPE);
if (!(rb_obj_is_kind_of(mask, cCvMat::rb_class())) || cvGetElemType(CVARR(mask)) != CV_8UC1)
rb_raise(rb_eTypeError, "argument 1 (mask) should be mask image.");
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvInpaint(CVARR(self), CVARR(mask), CVARR(dest), NUM2DBL(radius), method);
return dest;
}
@ -4615,7 +4625,7 @@ rb_inpaint_ns(VALUE self, VALUE mask, VALUE radius)
VALUE dest;
if (!(rb_obj_is_kind_of(mask, cCvMat::rb_class())) || cvGetElemType(CVARR(mask)) != CV_8UC1)
rb_raise(rb_eTypeError, "argument 1 (mask) should be mask image.");
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvInpaint(CVARR(self), CVARR(mask), CVARR(dest), NUM2DBL(radius), CV_INPAINT_NS);
return dest;
}
@ -4635,7 +4645,7 @@ rb_inpaint_telea(VALUE self, VALUE mask, VALUE radius)
VALUE dest;
if (!(rb_obj_is_kind_of(mask, cCvMat::rb_class())) || cvGetElemType(CVARR(mask)) != CV_8UC1)
rb_raise(rb_eTypeError, "argument 1 (mask) should be mask image.");
dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvInpaint(CVARR(self), CVARR(mask), CVARR(dest), NUM2DBL(radius), CV_INPAINT_TELEA);
return dest;
}
@ -4660,7 +4670,7 @@ VALUE
rb_equalize_hist(VALUE self)
{
SUPPORT_8UC1_ONLY(self);
VALUE dest = cCvMat::new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
VALUE dest = new_mat_kind_object(cvGetSize(CVARR(self)), self);
cvEqualizeHist(CVARR(self), CVARR(dest));
return dest;
}