CV\magnitude function
Esse commit está contido em:
@@ -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[] */
|
||||
};
|
||||
/* }}} */
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
Referência em uma Nova Issue
Bloquear um usuário