CV\split function

Esse commit está contido em:
hihozhou
2017-07-02 22:29:57 +08:00
commit a08090ec9c
8 arquivos alterados com 132 adições e 30 exclusões
+8 -7
Ver Arquivo
@@ -169,13 +169,13 @@ PHP_MINFO_FUNCTION(opencv)
*/
const zend_function_entry opencv_functions[] = {
PHP_FE(confirm_opencv_compiled, NULL) /* For testing, remove later. */
ZEND_NS_NAMED_FE(OPENCV_NS, cv_8uc_n, ZEND_FN(opencv_cv_8uc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, cv_8sc_n, ZEND_FN(opencv_cv_8sc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, cv_16uc_n, ZEND_FN(opencv_cv_16uc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, cv_16sc_n, ZEND_FN(opencv_cv_16sc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, cv_32sc_n, ZEND_FN(opencv_cv_32sc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, cv_32fc_n, ZEND_FN(opencv_cv_32fc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, cv_64fc_n, ZEND_FN(opencv_cv_64fc_n), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_8UC, ZEND_FN(opencv_cv_8uc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_8SC, ZEND_FN(opencv_cv_8sc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_16UC, ZEND_FN(opencv_cv_16uc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_16SC, ZEND_FN(opencv_cv_16sc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_32SC, ZEND_FN(opencv_cv_32sc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_32FC, ZEND_FN(opencv_cv_32fc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, CV_64FC, ZEND_FN(opencv_cv_64fc), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, imread, ZEND_FN(opencv_imread), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, imwrite, ZEND_FN(opencv_imwrite), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, imshow, ZEND_FN(opencv_imshow), NULL)
@@ -189,6 +189,7 @@ const zend_function_entry opencv_functions[] = {
ZEND_NS_NAMED_FE(OPENCV_NS, rectangleByPoint, ZEND_FN(opencv_rectangle_by_point), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, rectangleByRect, ZEND_FN(opencv_rectangle_by_rect), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, addWeighted, ZEND_FN(opencv_add_weighted), NULL)
ZEND_NS_NAMED_FE(OPENCV_NS, split, ZEND_FN(opencv_split), NULL)
PHP_FE_END /* Must be the last line in opencv_functions[] */
};
/* }}} */
+7 -7
Ver Arquivo
@@ -54,7 +54,7 @@ void opencv_interface_init(int module_number)
}
PHP_FUNCTION(opencv_cv_8uc_n)
PHP_FUNCTION(opencv_cv_8uc)
{
long num;
@@ -64,7 +64,7 @@ PHP_FUNCTION(opencv_cv_8uc_n)
RETURN_LONG(CV_8UC(num));
}
PHP_FUNCTION(opencv_cv_8sc_n)
PHP_FUNCTION(opencv_cv_8sc)
{
long num;
@@ -75,7 +75,7 @@ PHP_FUNCTION(opencv_cv_8sc_n)
}
PHP_FUNCTION(opencv_cv_16uc_n)
PHP_FUNCTION(opencv_cv_16uc)
{
long num;
@@ -85,7 +85,7 @@ PHP_FUNCTION(opencv_cv_16uc_n)
RETURN_LONG(CV_16UC(num));
}
PHP_FUNCTION(opencv_cv_16sc_n)
PHP_FUNCTION(opencv_cv_16sc)
{
long num;
@@ -95,7 +95,7 @@ PHP_FUNCTION(opencv_cv_16sc_n)
RETURN_LONG(CV_16SC(num));
}
PHP_FUNCTION(opencv_cv_32sc_n)
PHP_FUNCTION(opencv_cv_32sc)
{
long num;
@@ -105,7 +105,7 @@ PHP_FUNCTION(opencv_cv_32sc_n)
RETURN_LONG(CV_32SC(num));
}
PHP_FUNCTION(opencv_cv_32fc_n)
PHP_FUNCTION(opencv_cv_32fc)
{
long num;
@@ -116,7 +116,7 @@ PHP_FUNCTION(opencv_cv_32fc_n)
}
PHP_FUNCTION(opencv_cv_64fc_n)
PHP_FUNCTION(opencv_cv_64fc)
{
long num;
+7 -7
Ver Arquivo
@@ -2,11 +2,11 @@
#define OPENCV_INTERFACE_H
extern void opencv_interface_init(int module_number);
extern PHP_FUNCTION(opencv_cv_8uc_n);
extern PHP_FUNCTION(opencv_cv_8sc_n);
extern PHP_FUNCTION(opencv_cv_16uc_n);
extern PHP_FUNCTION(opencv_cv_16sc_n);
extern PHP_FUNCTION(opencv_cv_32sc_n);
extern PHP_FUNCTION(opencv_cv_32fc_n);
extern PHP_FUNCTION(opencv_cv_64fc_n);
extern PHP_FUNCTION(opencv_cv_8uc);
extern PHP_FUNCTION(opencv_cv_8sc);
extern PHP_FUNCTION(opencv_cv_16uc);
extern PHP_FUNCTION(opencv_cv_16sc);
extern PHP_FUNCTION(opencv_cv_32sc);
extern PHP_FUNCTION(opencv_cv_32fc);
extern PHP_FUNCTION(opencv_cv_64fc);
#endif //OPENCV_INTERFACE_H
+46 -3
Ver Arquivo
@@ -85,7 +85,50 @@ PHP_FUNCTION(opencv_add_weighted){
opencv_mat_update_property_by_c_mat(&instance, new_obj->mat);
RETURN_ZVAL(&instance,0,0);
}
}
/**
* CV\split
* @param execute_data
* @param return_value
*/
PHP_FUNCTION(opencv_split){
double alpha, beta, gamma;
long dtype = -1;
zval *src_zval;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "O", &src_zval, opencv_mat_ce) == FAILURE) {
RETURN_NULL();
}
opencv_mat_object *src_obj = Z_PHP_MAT_OBJ_P(src_zval);
std::vector<Mat> channels;
split(*src_obj->mat,channels);
zval return_val,blue_zval,green_zval,red_zval;
Mat blue,green,red;
array_init(&return_val);
object_init_ex(&blue_zval,opencv_mat_ce);
opencv_mat_object *blue_mat_object = Z_PHP_MAT_OBJ_P(&blue_zval);
blue = channels.at(0);
blue_mat_object->mat = new Mat(blue);
opencv_mat_update_property_by_c_mat(&blue_zval,blue_mat_object->mat);
object_init_ex(&green_zval,opencv_mat_ce);
opencv_mat_object *green_mat_object = Z_PHP_MAT_OBJ_P(&green_zval);
green = channels.at(1);
green_mat_object->mat = new Mat(green);
opencv_mat_update_property_by_c_mat(&green_zval,green_mat_object->mat);
object_init_ex(&red_zval,opencv_mat_ce);
opencv_mat_object *red_mat_object = Z_PHP_MAT_OBJ_P(&red_zval);
red = channels.at(2);
red_mat_object->mat = new Mat(red);
opencv_mat_update_property_by_c_mat(&red_zval,red_mat_object->mat);
add_next_index_zval(&return_val,&blue_zval);
add_next_index_zval(&return_val,&green_zval);
add_next_index_zval(&return_val,&red_zval);
RETURN_ZVAL(&return_val,0,0);
}
+1
Ver Arquivo
@@ -12,5 +12,6 @@ extern void opencv_core_init(int module_number);
extern zend_class_entry *opencv_formatter_ce;
PHP_FUNCTION(opencv_add_weighted);
PHP_FUNCTION(opencv_split);
#endif //OPENCV_CORE_H
+1 -4
Ver Arquivo
@@ -34,10 +34,7 @@ PHP_FUNCTION(opencv_cv_t_color){
dst_obj->mat=new Mat(dstImg);
//update php Mat object property
zend_update_property_long(opencv_mat_ce, &instance, "rows", sizeof("rows")-1, dst_obj->mat->rows);
zend_update_property_long(opencv_mat_ce, &instance, "cols", sizeof("cols")-1, dst_obj->mat->cols);
zend_update_property_long(opencv_mat_ce, &instance, "type", sizeof("type")-1, dst_obj->mat->type());
opencv_mat_update_property_by_c_mat(&instance,dst_obj->mat);
RETURN_ZVAL(&instance,0,0); //return php Mat object
}
+2 -2
Ver Arquivo
@@ -4,7 +4,7 @@ Check for opencv constant
<?php if (!extension_loaded("opencv")) print "skip"; ?>
--FILE--
<?php
use function CV\{cv_8uc_n};
use function CV\{CV_8UC};
use const CV\{CV_8UC1,CV_8SC1,CV_16UC1,CV_16SC1,CV_32SC1,CV_32FC1,CV_64FC1};
var_dump(CV_8UC1);
var_dump(CV_8SC1);
@@ -13,7 +13,7 @@ var_dump(CV_16SC1);
var_dump(CV_32SC1);
var_dump(CV_32FC1);
var_dump(CV_64FC1);
var_dump(cv_8uc_n(1));
var_dump(CV_8UC(1));
?>
--EXPECT--
+60
Ver Arquivo
@@ -0,0 +1,60 @@
--TEST--
split test
--SKIPIF--
<?php if (!extension_loaded("opencv")) print "skip"; ?>
--FILE--
<?php
use function CV\{
imread, split,waitKey,imshow
};
use const CV\{CV_8UC3};
use CV\{Mat,Scalar,Formatter};
$srcImage = new Mat(10,10,CV_8UC3,new Scalar(10,11,12));
list($b,$g,$r) = split($srcImage);
$srcImage->print(Formatter::FMT_PYTHON);
$b->print(Formatter::FMT_PYTHON);
$g->print(Formatter::FMT_PYTHON);
$r->print(Formatter::FMT_PYTHON);
--EXPECT--
[[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]],
[[ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12], [ 10, 11, 12]]]
[[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]]
[[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11]]
[[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
[ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]]