Skip to content

Commit 170cab5

Browse files
MaleicAcidMaleicAcid
authored andcommitted
add Mat->plus() //replace with Mat*3
add Mat->divide() //replace with Mat/3 update mat.phpt Signed-off-by: MaleicAcid <CS_MaleicAcid@163.com>
1 parent 37a2f4d commit 170cab5

File tree

2 files changed

+74
-1
lines changed

2 files changed

+74
-1
lines changed

source/opencv2/core/opencv_mat.cc

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,53 @@ PHP_METHOD(opencv_mat, size)
450450
RETURN_ZVAL(&instance,0,0);
451451
}
452452

453+
/**
454+
* Mat->plus()
455+
* @param execute_data
456+
* @param return_value
457+
*/
458+
PHP_METHOD(opencv_mat, plus)
459+
{
460+
zval instance;
461+
double number=1;
462+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "d", &number) == FAILURE) {
463+
RETURN_NULL();
464+
}
465+
466+
object_init_ex(&instance, opencv_mat_ce);
467+
468+
opencv_mat_object *new_obj = Z_PHP_MAT_OBJ_P(&instance);
469+
opencv_mat_object *obj = Z_PHP_MAT_OBJ_P(getThis());
470+
new_obj->mat=new Mat(*(obj->mat)*number);
471+
472+
opencv_mat_update_property_by_c_mat(&instance, new_obj->mat);
473+
474+
RETURN_ZVAL(&instance,0,0); //return php Mat object
475+
}
476+
477+
/**
478+
* Mat->divide()
479+
* @param execute_data
480+
* @param return_value
481+
*/
482+
PHP_METHOD(opencv_mat, divide)
483+
{
484+
zval instance;
485+
double number=1;
486+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "d", &number) == FAILURE) {
487+
RETURN_NULL();
488+
}
489+
490+
object_init_ex(&instance, opencv_mat_ce);
491+
492+
opencv_mat_object *new_obj = Z_PHP_MAT_OBJ_P(&instance);
493+
opencv_mat_object *obj = Z_PHP_MAT_OBJ_P(getThis());
494+
new_obj->mat=new Mat(*(obj->mat)/number);
495+
496+
opencv_mat_update_property_by_c_mat(&instance, new_obj->mat);
497+
498+
RETURN_ZVAL(&instance,0,0); //return php Mat object
499+
}
453500

454501
/**
455502
* opencv_mat_methods[]
@@ -474,6 +521,8 @@ const zend_function_entry opencv_mat_methods[] = {
474521
PHP_MALIAS(opencv_mat, getImageROI ,get_image_roi, NULL, ZEND_ACC_PUBLIC)
475522
PHP_MALIAS(opencv_mat, copyTo ,copy_to, opencv_mat_copy_to_arginfo, ZEND_ACC_PUBLIC)
476523
PHP_MALIAS(opencv_mat, convertTo ,convert_to, opencv_mat_convert_to_arginfo, ZEND_ACC_PUBLIC)
524+
PHP_ME(opencv_mat, plus, NULL, ZEND_ACC_PUBLIC)
525+
PHP_ME(opencv_mat, divide, NULL, ZEND_ACC_PUBLIC)
477526
PHP_FE_END
478527
};
479528
/* }}} */

tests/mat.phpt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ $zeros->print(Formatter::FMT_PYTHON);
1818
$ones = Mat::ones(10,10,CV_8UC1);
1919
var_dump($ones);
2020
$ones->print(Formatter::FMT_PYTHON);
21+
$ones = $ones->plus(3);
22+
$ones->print(Formatter::FMT_PYTHON);
23+
$ones = $ones->divide(1/9);
24+
$ones->print(Formatter::FMT_PYTHON);
2125
?>
2226
--EXPECT--
2327
object(CV\Mat)#2 (4) {
@@ -74,4 +78,24 @@ object(CV\Mat)#4 (4) {
7478
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
7579
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
7680
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
77-
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
81+
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
82+
[[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
83+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
84+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
85+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
86+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
87+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
88+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
89+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
90+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
91+
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]]
92+
[[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
93+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
94+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
95+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
96+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
97+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
98+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
99+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
100+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
101+
[ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27]]

0 commit comments

Comments
 (0)