CV\magnitude function

Esse commit está contido em:
hihozhou
2017-07-10 11:03:28 +08:00
commit 9fb006fdc2
4 arquivos alterados com 87 adições e 1 exclusões
+1
Ver Arquivo
@@ -197,6 +197,7 @@ const zend_function_entry opencv_functions[] = {
ZEND_NS_NAMED_FE(OPENCV_NS, getOptimalDFTSize, ZEND_FN(opencv_get_optimal_dft_size), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, copyMakeBorder, ZEND_FN(opencv_copy_make_border), opencv_copy_make_border_arginfo)
ZEND_NS_NAMED_FE(OPENCV_NS, dft, ZEND_FN(opencv_dft), opencv_dft_arginfo)
ZEND_NS_NAMED_FE(OPENCV_NS, magnitude, ZEND_FN(opencv_magnitude), opencv_magnitude_arginfo)
PHP_FE_END /* Must be the last line in opencv_functions[] */
};
/* }}} */
+43 -1
Ver Arquivo
@@ -259,7 +259,7 @@ PHP_FUNCTION(opencv_copy_make_border){
}
/**
* CV\merge
* CV\dft
* @param execute_data
* @param return_value
*/
@@ -298,3 +298,45 @@ PHP_FUNCTION(opencv_dft){
RETURN_NULL();
}
/**
* CV\magnitude
* @param execute_data
* @param return_value
*/
PHP_FUNCTION(opencv_magnitude){
zval *x_zval, *y_zval, *dst_zval;
opencv_mat_object *dst_object;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "OOz",
&x_zval, opencv_mat_ce,
&y_zval, opencv_mat_ce,
&dst_zval) == FAILURE) {
RETURN_NULL();
}
opencv_mat_object *x_object = Z_PHP_MAT_OBJ_P(x_zval);
opencv_mat_object *y_object = Z_PHP_MAT_OBJ_P(y_zval);
zval *dst_real_zval = Z_REFVAL_P(dst_zval);
if(Z_TYPE_P(dst_real_zval) == IS_OBJECT && Z_OBJCE_P(dst_real_zval)==opencv_mat_ce){
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
} else{
zval instance;
Mat dst;
object_init_ex(&instance,opencv_mat_ce);
ZVAL_COPY_VALUE(dst_real_zval, &instance);
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
dst_object->mat = new Mat(dst);
}
try{
magnitude(*x_object->mat, *y_object->mat, *dst_object->mat);
}catch (Exception e){
opencv_throw_exception(e.what());
}
opencv_mat_update_property_by_c_mat(dst_real_zval, dst_object->mat);
RETURN_NULL();
}
+7
Ver Arquivo
@@ -51,4 +51,11 @@ ZEND_BEGIN_ARG_INFO_EX(opencv_dft_arginfo, 0, 0, 4)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_dft);
ZEND_BEGIN_ARG_INFO_EX(opencv_magnitude_arginfo, 0, 0, 3)
ZEND_ARG_INFO(0, x)
ZEND_ARG_INFO(0, y)
ZEND_ARG_INFO(1, magnitude)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_magnitude);
#endif //OPENCV_CORE_H
+36
Ver Arquivo
@@ -0,0 +1,36 @@
--TEST--
CV magnitude function test
--SKIPIF--
<?php if (!extension_loaded("opencv")) print "skip"; ?>
--FILE--
<?php
use function CV\{magnitude};
use const CV\{CV_32FC1};
use CV\{Mat,Scalar};
$mat1 = new Mat(5,5,CV_32FC1,new Scalar(3));
$mat2 = new Mat(5,5,CV_32FC1,new Scalar(4));
$mat3 = null;
magnitude($mat1,$mat2,$mat3);
$mat1->print();
$mat2->print();
$mat3->print();
?>
--EXPECT--
[3, 3, 3, 3, 3;
3, 3, 3, 3, 3;
3, 3, 3, 3, 3;
3, 3, 3, 3, 3;
3, 3, 3, 3, 3]
[4, 4, 4, 4, 4;
4, 4, 4, 4, 4;
4, 4, 4, 4, 4;
4, 4, 4, 4, 4;
4, 4, 4, 4, 4]
[5, 5, 5, 5, 5;
5, 5, 5, 5, 5;
5, 5, 5, 5, 5;
5, 5, 5, 5, 5;
5, 5, 5, 5, 5]