@@ -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
0 commit comments