@@ -30,6 +30,7 @@ void opencv_imgproc_init(int module_number)
3030 opencv_morph_types_init (module_number);
3131 opencv_flood_fill_flags_init (module_number);
3232 opencv_threshold_types_init (module_number);
33+ opencv_adaptive_threshold_types_init (module_number);
3334}
3435
3536/* *
@@ -681,6 +682,42 @@ PHP_FUNCTION(opencv_threshold){
681682 RETURN_DOUBLE (threshold (*src_object->mat , *dst_object->mat , thresh, maxval, (int )type));
682683}
683684
685+
686+
687+ PHP_FUNCTION (opencv_adaptive_threshold){
688+
689+ zval *src_zval, *dst_zval;
690+ double maxValue, C;
691+ long adaptiveMethod, thresholdType, blockSize;
692+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Ozdllld" ,
693+ &src_zval, opencv_mat_ce,
694+ &dst_zval,
695+ &maxValue, &adaptiveMethod,
696+ &thresholdType, &blockSize, &C) == FAILURE) {
697+ RETURN_NULL ();
698+ }
699+
700+ opencv_mat_object *src_object, *dst_object;
701+
702+ src_object = Z_PHP_MAT_OBJ_P (src_zval);
703+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
704+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
705+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
706+ } else {
707+ zval_ptr_dtor (dst_real_zval);
708+ zval instance;
709+ Mat dst;
710+ object_init_ex (&instance,opencv_mat_ce);
711+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
712+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
713+ dst_object->mat = new Mat (dst);
714+ }
715+
716+ adaptiveThreshold (*src_object->mat , *dst_object->mat , maxValue, (int )adaptiveMethod, (int )thresholdType, (int )blockSize, C);
717+ RETURN_NULL ();
718+ }
719+
720+
684721/* *
685722 * CV\sobel
686723 * @param execute_data
@@ -1347,4 +1384,10 @@ void opencv_threshold_types_init(int module_number){
13471384 REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " THRESH_MASK" , THRESH_MASK, CONST_CS | CONST_PERSISTENT);
13481385 REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " THRESH_OTSU" , THRESH_OTSU, CONST_CS | CONST_PERSISTENT);
13491386 REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " THRESH_TRIANGLE" , THRESH_TRIANGLE, CONST_CS | CONST_PERSISTENT);
1350- }
1387+ }
1388+
1389+ // AdaptiveThresholdTypes
1390+ void opencv_adaptive_threshold_types_init (int module_number){
1391+ REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " ADAPTIVE_THRESH_MEAN_C" , ADAPTIVE_THRESH_MEAN_C, CONST_CS | CONST_PERSISTENT);
1392+ REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " ADAPTIVE_THRESH_GAUSSIAN_C" , ADAPTIVE_THRESH_GAUSSIAN_C, CONST_CS | CONST_PERSISTENT);
1393+ }
0 commit comments