@@ -638,11 +638,43 @@ PHP_FUNCTION(opencv_erode){
638638 opencv_scalar_object *border_value_object = Z_PHP_SCALAR_OBJ_P (border_value_zval);
639639 border_value = *border_value_object->scalar ;
640640 }
641-
642641 erode (*src_object->mat , *dst_object->mat , *kernel_object->mat , anchor, (int )iterations, (int )border_type, border_value);
643642 RETURN_NULL ();
644643}
645644
645+
646+ PHP_FUNCTION (opencv_threshold){
647+
648+ zval *src_zval, *dst_zval;
649+ double thresh, maxval;
650+ long type;
651+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Ozddl" ,
652+ &src_zval, opencv_mat_ce,
653+ &dst_zval,
654+ &thresh, &maxval,
655+ &type) == FAILURE) {
656+ RETURN_NULL ();
657+ }
658+
659+ opencv_mat_object *src_object, *dst_object;
660+
661+ src_object = Z_PHP_MAT_OBJ_P (src_zval);
662+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
663+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
664+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
665+ } else {
666+ zval_ptr_dtor (dst_real_zval);
667+ zval instance;
668+ Mat dst;
669+ object_init_ex (&instance,opencv_mat_ce);
670+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
671+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
672+ dst_object->mat = new Mat (dst);
673+ }
674+ threshold (*src_object->mat , *dst_object->mat , thresh, maxval, (int )type);
675+
676+ }
677+
646678/* *
647679 * color conversion code in CV\cvtColor,opencv enum ColorConversionCodes
648680 * @param module_number
0 commit comments