Skip to content

Commit 57ea396

Browse files
committed
Add CV\Mat::add and CV\Mat::subtract function
1 parent 0791d44 commit 57ea396

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

source/opencv2/core/opencv_mat.cc

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,64 @@ PHP_METHOD(opencv_mat, set_to)
578578

579579
}
580580

581+
/**
582+
* CV\Mat::add()
583+
* @param execute_data
584+
* @param return_value
585+
*/
586+
PHP_METHOD(opencv_mat, add)
587+
{
588+
zval *value1_zval, *value2_zval;
589+
590+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "OO",
591+
&value1_zval, opencv_mat_ce,
592+
&value2_zval, opencv_mat_ce
593+
) == FAILURE) {
594+
RETURN_NULL();
595+
}
596+
597+
opencv_mat_object *value1_obj = Z_PHP_MAT_OBJ_P(value1_zval);
598+
opencv_mat_object *value2_obj = Z_PHP_MAT_OBJ_P(value2_zval);
599+
zval instance;
600+
object_init_ex(&instance, opencv_mat_ce);
601+
opencv_mat_object *obj = Z_PHP_MAT_OBJ_P(&instance);
602+
603+
Mat im = *value1_obj->mat + *value2_obj->mat;
604+
605+
obj->mat=new Mat(im);
606+
//update php Mat object property
607+
opencv_mat_update_property_by_c_mat(&instance, obj->mat);
608+
609+
RETURN_ZVAL(&instance,0,0); //return php Mat object
610+
}
611+
612+
PHP_METHOD(opencv_mat, subtract)
613+
{
614+
zval *value1_zval, *value2_zval;
615+
616+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "OO",
617+
&value1_zval, opencv_mat_ce,
618+
&value2_zval, opencv_mat_ce
619+
) == FAILURE) {
620+
RETURN_NULL();
621+
}
622+
623+
opencv_mat_object *value1_obj = Z_PHP_MAT_OBJ_P(value1_zval);
624+
opencv_mat_object *value2_obj = Z_PHP_MAT_OBJ_P(value2_zval);
625+
zval instance;
626+
object_init_ex(&instance, opencv_mat_ce);
627+
opencv_mat_object *obj = Z_PHP_MAT_OBJ_P(&instance);
628+
629+
Mat im = *value1_obj->mat - *value2_obj->mat;
630+
631+
obj->mat=new Mat(im);
632+
//update php Mat object property
633+
opencv_mat_update_property_by_c_mat(&instance, obj->mat);
634+
635+
RETURN_ZVAL(&instance,0,0); //return php Mat object
636+
}
637+
638+
581639
/**
582640
* opencv_mat_methods[]
583641
*/
@@ -604,6 +662,8 @@ const zend_function_entry opencv_mat_methods[] = {
604662
PHP_ME(opencv_mat, plus, NULL, ZEND_ACC_PUBLIC)
605663
PHP_ME(opencv_mat, divide, NULL, ZEND_ACC_PUBLIC)
606664
PHP_MALIAS(opencv_mat, setTo ,set_to, NULL, ZEND_ACC_PUBLIC)
665+
PHP_ME(opencv_mat, add , NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
666+
PHP_ME(opencv_mat, subtract , NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
607667
PHP_FE_END
608668
};
609669
/* }}} */

0 commit comments

Comments
 (0)