Skip to content

Commit 4bc7d1b

Browse files
committed
Add CV\bilateralFilter function
1 parent 796926a commit 4bc7d1b

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

opencv.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ const zend_function_entry opencv_functions[] = {
217217
ZEND_NS_NAMED_FE(OPENCV_NS, blur, ZEND_FN(opencv_blur), opencv_blur_arginfo)
218218
ZEND_NS_NAMED_FE(OPENCV_NS, GaussianBlur, ZEND_FN(opencv_gaussian_blur), opencv_gaussian_blur_arginfo)
219219
ZEND_NS_NAMED_FE(OPENCV_NS, medianBlur, ZEND_FN(opencv_median_blur), opencv_median_blur_arginfo)
220+
ZEND_NS_NAMED_FE(OPENCV_NS, bilateralFilter, ZEND_FN(opencv_bilateral_filter), opencv_bilateral_filter_arginfo)
220221
PHP_FE_END /* Must be the last line in opencv_functions[] */
221222
};
222223
/* }}} */

source/opencv2/opencv_imgproc.cc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,39 @@ PHP_FUNCTION(opencv_median_blur){
439439
RETURN_NULL();
440440
}
441441

442+
PHP_FUNCTION(opencv_bilateral_filter){
443+
444+
zval *src_zval, *dst_zval;
445+
long d, border_type = BORDER_DEFAULT;
446+
double sigma_color, sigma_space;
447+
opencv_mat_object *dst_object;
448+
449+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Ozlddl",
450+
&src_zval, opencv_mat_ce,
451+
&dst_zval, &d, &sigma_color,
452+
&sigma_space, &border_type) == FAILURE) {
453+
RETURN_NULL();
454+
}
455+
456+
opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P(src_zval);
457+
458+
zval *dst_real_zval = Z_REFVAL_P(dst_zval);
459+
if(Z_TYPE_P(dst_real_zval) == IS_OBJECT && Z_OBJCE_P(dst_real_zval) == opencv_mat_ce){
460+
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
461+
} else{
462+
zval_ptr_dtor(dst_real_zval);
463+
zval instance;
464+
Mat dst;
465+
object_init_ex(&instance,opencv_mat_ce);
466+
ZVAL_COPY_VALUE(dst_real_zval, &instance);
467+
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
468+
dst_object->mat = new Mat(dst);
469+
}
470+
bilateralFilter(*src_object->mat, *dst_object->mat, (int)d, sigma_color, sigma_space, border_type);
471+
RETURN_NULL();
472+
}
473+
474+
442475
/**
443476
* color conversion code in CV\cvtColor,opencv enum ColorConversionCodes
444477
* @param module_number

source/opencv2/opencv_imgproc.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,14 @@ ZEND_BEGIN_ARG_INFO_EX(opencv_median_blur_arginfo, 0, 0, 3)
6969
ZEND_ARG_INFO(0, ksize)
7070
ZEND_END_ARG_INFO()
7171
PHP_FUNCTION(opencv_median_blur);
72+
ZEND_BEGIN_ARG_INFO_EX(opencv_bilateral_filter_arginfo, 0, 0, 6)
73+
ZEND_ARG_INFO(0, src)
74+
ZEND_ARG_INFO(1, dst)
75+
ZEND_ARG_INFO(0, d)
76+
ZEND_ARG_INFO(0, sigmaColor)
77+
ZEND_ARG_INFO(0, sigmaSpace)
78+
ZEND_ARG_INFO(0, borderType)
79+
ZEND_END_ARG_INFO()
80+
PHP_FUNCTION(opencv_bilateral_filter);
7281

7382
#endif //OPENCV_OPENCV_IMGPROC_H

0 commit comments

Comments
 (0)