From 683f43ce3a7fec72ac6877b22a5ab51b5b3920dd Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Sat, 12 Aug 2017 00:18:36 +0800 Subject: [PATCH 01/11] add cv\threshold(return not double but obj) Signed-off-by: MaleicAcid --- source/opencv2/opencv_imgproc.cc | 30 ++++++++++++++++++++++++++++++ source/opencv2/opencv_imgproc.h | 1 + 2 files changed, 31 insertions(+) diff --git a/source/opencv2/opencv_imgproc.cc b/source/opencv2/opencv_imgproc.cc index daaf3f4..6c8d854 100644 --- a/source/opencv2/opencv_imgproc.cc +++ b/source/opencv2/opencv_imgproc.cc @@ -56,6 +56,36 @@ PHP_FUNCTION(opencv_cv_t_color){ RETURN_ZVAL(&instance,0,0); //return php Mat object } +/** + * CV\threshold + * @param execute_data + * @param return_value + */ +PHP_FUNCTION(opencv_threshold){ + long type; + double thresh; + double maxval; + Mat dstImg; + zval *mat_zval; + + if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oddl", &mat_zval,opencv_mat_ce, &thresh, &maxval, &type) == FAILURE) { + RETURN_NULL(); + } + + opencv_mat_object *src_obj = Z_PHP_MAT_OBJ_P(mat_zval); + threshold(*(src_obj->mat),dstImg,thresh,maxval,type); + + zval instance; + object_init_ex(&instance,opencv_mat_ce); + opencv_mat_object *dst_obj = Z_PHP_MAT_OBJ_P(&instance); + + dst_obj->mat=new Mat(dstImg); + + opencv_mat_update_property_by_c_mat(&instance,dst_obj->mat); + + RETURN_ZVAL(&instance,0,0); //return php Mat object +} + /** * CV\ellipse * @param CV\Mat $img, Mat of original picture diff --git a/source/opencv2/opencv_imgproc.h b/source/opencv2/opencv_imgproc.h index 402eecc..e72a8bc 100644 --- a/source/opencv2/opencv_imgproc.h +++ b/source/opencv2/opencv_imgproc.h @@ -21,6 +21,7 @@ void opencv_imgproc_init(int module_number); void opencv_color_conversion_code_init(int module_number); void opencv_line_type_init(int module_number); PHP_FUNCTION(opencv_cv_t_color); +PHP_FUNCTION(opencv_threshold); PHP_FUNCTION(opencv_ellipse); PHP_FUNCTION(opencv_circle); ZEND_BEGIN_ARG_INFO_EX(opencv_fill_poly_arginfo, 0, 0, 7) From 0d5336c2ae2cfdbf7b79f4767af187c13b809ce1 Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Sat, 12 Aug 2017 00:22:44 +0800 Subject: [PATCH 02/11] add cv\threshold(return not double but obj) Signed-off-by: MaleicAcid --- opencv.cc | 1 + source/opencv2/opencv_imgproc.cc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/opencv.cc b/opencv.cc index aff6b6b..d8743ff 100644 --- a/opencv.cc +++ b/opencv.cc @@ -192,6 +192,7 @@ const zend_function_entry opencv_functions[] = { ZEND_NS_NAMED_FE(OPENCV_NS, moveWindow, ZEND_FN(opencv_move_window), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, namedWindow, ZEND_FN(opencv_named_window), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, cvtColor, ZEND_FN(opencv_cv_t_color), NULL) + ZEND_NS_NAMED_FE(OPENCV_NS, threshold, ZEND_FN(opencv_threshold), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, ellipse, ZEND_FN(opencv_ellipse), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, circle, ZEND_FN(opencv_circle), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, fillPoly, ZEND_FN(opencv_fill_poly), opencv_fill_poly_arginfo) diff --git a/source/opencv2/opencv_imgproc.cc b/source/opencv2/opencv_imgproc.cc index 6c8d854..3196f07 100644 --- a/source/opencv2/opencv_imgproc.cc +++ b/source/opencv2/opencv_imgproc.cc @@ -80,7 +80,6 @@ PHP_FUNCTION(opencv_threshold){ opencv_mat_object *dst_obj = Z_PHP_MAT_OBJ_P(&instance); dst_obj->mat=new Mat(dstImg); - opencv_mat_update_property_by_c_mat(&instance,dst_obj->mat); RETURN_ZVAL(&instance,0,0); //return php Mat object From 7a9bc20b6977e1bbff5bf2fb1a0c350d93148f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=9D=A5=E9=85=B8?= Date: Sat, 12 Aug 2017 00:25:49 +0800 Subject: [PATCH 03/11] Remove Spaces; --- opencv.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencv.cc b/opencv.cc index d8743ff..1f79cc0 100644 --- a/opencv.cc +++ b/opencv.cc @@ -192,7 +192,7 @@ const zend_function_entry opencv_functions[] = { ZEND_NS_NAMED_FE(OPENCV_NS, moveWindow, ZEND_FN(opencv_move_window), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, namedWindow, ZEND_FN(opencv_named_window), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, cvtColor, ZEND_FN(opencv_cv_t_color), NULL) - ZEND_NS_NAMED_FE(OPENCV_NS, threshold, ZEND_FN(opencv_threshold), NULL) + ZEND_NS_NAMED_FE(OPENCV_NS, threshold, ZEND_FN(opencv_threshold), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, ellipse, ZEND_FN(opencv_ellipse), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, circle, ZEND_FN(opencv_circle), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, fillPoly, ZEND_FN(opencv_fill_poly), opencv_fill_poly_arginfo) From e4db5cb3d18353f21ffbc4f59b6c363d05cc2ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=9D=A5=E9=85=B8?= Date: Sun, 13 Aug 2017 21:41:57 +0800 Subject: [PATCH 04/11] Update opencv.cc --- opencv.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/opencv.cc b/opencv.cc index 1f79cc0..aff6b6b 100644 --- a/opencv.cc +++ b/opencv.cc @@ -192,7 +192,6 @@ const zend_function_entry opencv_functions[] = { ZEND_NS_NAMED_FE(OPENCV_NS, moveWindow, ZEND_FN(opencv_move_window), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, namedWindow, ZEND_FN(opencv_named_window), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, cvtColor, ZEND_FN(opencv_cv_t_color), NULL) - ZEND_NS_NAMED_FE(OPENCV_NS, threshold, ZEND_FN(opencv_threshold), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, ellipse, ZEND_FN(opencv_ellipse), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, circle, ZEND_FN(opencv_circle), NULL) ZEND_NS_NAMED_FE(OPENCV_NS, fillPoly, ZEND_FN(opencv_fill_poly), opencv_fill_poly_arginfo) From 5e7f9ad0b3de195d0f0400a2a9c9ca7af9e89ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=9D=A5=E9=85=B8?= Date: Sun, 13 Aug 2017 21:43:24 +0800 Subject: [PATCH 05/11] Update opencv_imgproc.cc --- source/opencv2/opencv_imgproc.cc | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/source/opencv2/opencv_imgproc.cc b/source/opencv2/opencv_imgproc.cc index 3196f07..22476d7 100644 --- a/source/opencv2/opencv_imgproc.cc +++ b/source/opencv2/opencv_imgproc.cc @@ -56,34 +56,6 @@ PHP_FUNCTION(opencv_cv_t_color){ RETURN_ZVAL(&instance,0,0); //return php Mat object } -/** - * CV\threshold - * @param execute_data - * @param return_value - */ -PHP_FUNCTION(opencv_threshold){ - long type; - double thresh; - double maxval; - Mat dstImg; - zval *mat_zval; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oddl", &mat_zval,opencv_mat_ce, &thresh, &maxval, &type) == FAILURE) { - RETURN_NULL(); - } - - opencv_mat_object *src_obj = Z_PHP_MAT_OBJ_P(mat_zval); - threshold(*(src_obj->mat),dstImg,thresh,maxval,type); - - zval instance; - object_init_ex(&instance,opencv_mat_ce); - opencv_mat_object *dst_obj = Z_PHP_MAT_OBJ_P(&instance); - - dst_obj->mat=new Mat(dstImg); - opencv_mat_update_property_by_c_mat(&instance,dst_obj->mat); - - RETURN_ZVAL(&instance,0,0); //return php Mat object -} /** * CV\ellipse @@ -840,4 +812,4 @@ void opencv_line_type_init(int module_number){ REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "LINE_4", LINE_4, CONST_CS | CONST_PERSISTENT); REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "LINE_8", LINE_8, CONST_CS | CONST_PERSISTENT); REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "LINE_AA", LINE_AA, CONST_CS | CONST_PERSISTENT); -} \ No newline at end of file +} From a25bcae1aad7ece863012e69bb521e87ae98aac3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=9D=A5=E9=85=B8?= Date: Sun, 13 Aug 2017 21:43:44 +0800 Subject: [PATCH 06/11] Update opencv_imgproc.h --- source/opencv2/opencv_imgproc.h | 1 - 1 file changed, 1 deletion(-) diff --git a/source/opencv2/opencv_imgproc.h b/source/opencv2/opencv_imgproc.h index e72a8bc..402eecc 100644 --- a/source/opencv2/opencv_imgproc.h +++ b/source/opencv2/opencv_imgproc.h @@ -21,7 +21,6 @@ void opencv_imgproc_init(int module_number); void opencv_color_conversion_code_init(int module_number); void opencv_line_type_init(int module_number); PHP_FUNCTION(opencv_cv_t_color); -PHP_FUNCTION(opencv_threshold); PHP_FUNCTION(opencv_ellipse); PHP_FUNCTION(opencv_circle); ZEND_BEGIN_ARG_INFO_EX(opencv_fill_poly_arginfo, 0, 0, 7) From 4a613a4e1392ec2daa481ab4cd3f1a6cf155c448 Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Sun, 13 Aug 2017 21:56:08 +0800 Subject: [PATCH 07/11] add CV\getStructuringElement --- opencv.cc | 1 + source/opencv2/opencv_imgproc.cc | 36 ++++++++++++++++++++++++++++++++ source/opencv2/opencv_imgproc.h | 6 ++++++ 3 files changed, 43 insertions(+) diff --git a/opencv.cc b/opencv.cc index e2f59ed..7319dea 100644 --- a/opencv.cc +++ b/opencv.cc @@ -222,6 +222,7 @@ const zend_function_entry opencv_functions[] = { ZEND_NS_NAMED_FE(OPENCV_NS, bilateralFilter, ZEND_FN(opencv_bilateral_filter), opencv_bilateral_filter_arginfo) ZEND_NS_NAMED_FE(OPENCV_NS, dilate, ZEND_FN(opencv_dilate), opencv_dilate_arginfo) ZEND_NS_NAMED_FE(OPENCV_NS, erode, ZEND_FN(opencv_erode), opencv_erode_arginfo) + ZEND_NS_NAMED_FE(OPENCV_NS, getStructuringElement, ZEND_FN(opencv_get_structuring_element), opencv_get_structuring_element_arginfo) PHP_FE_END /* Must be the last line in opencv_functions[] */ }; /* }}} */ diff --git a/source/opencv2/opencv_imgproc.cc b/source/opencv2/opencv_imgproc.cc index d618a08..2447978 100644 --- a/source/opencv2/opencv_imgproc.cc +++ b/source/opencv2/opencv_imgproc.cc @@ -644,6 +644,42 @@ PHP_FUNCTION(opencv_erode){ RETURN_NULL(); } +/** + * CV\getStructuringElement + * @param execute_data + * @param return_value + */ +PHP_FUNCTION(opencv_get_structuring_element){ + long shape; + zval *ksize_zval, *anchor_zval = NULL; + Point anchor = Point(-1,-1); + opencv_mat_object *dst_object; + Mat dst; + if (zend_parse_parameters(ZEND_NUM_ARGS(), "lO|O", + &shape, + &ksize_zval, opencv_size_ce, + &anchor_zval, opencv_point_ce) == FAILURE) { + RETURN_NULL(); + } + + opencv_size_object *ksize_object = Z_PHP_SIZE_OBJ_P(ksize_zval); + if(anchor_zval != NULL){ + opencv_point_object *anchor_object = Z_PHP_POINT_OBJ_P(anchor_zval); + anchor = *anchor_object->point; + } + + dst = getStructuringElement((int)shape, *ksize_object->size, anchor); + + zval instance; + object_init_ex(&instance,opencv_mat_ce); + opencv_mat_object *dst_obj = Z_PHP_MAT_OBJ_P(&instance); + + dst_obj->mat=new Mat(dst); + opencv_mat_update_property_by_c_mat(&instance,dst_obj->mat); + + RETURN_ZVAL(&instance,0,0); //return php Mat object +} + /** * color conversion code in CV\cvtColor,opencv enum ColorConversionCodes * @param module_number diff --git a/source/opencv2/opencv_imgproc.h b/source/opencv2/opencv_imgproc.h index 0cb5bba..299f248 100644 --- a/source/opencv2/opencv_imgproc.h +++ b/source/opencv2/opencv_imgproc.h @@ -111,4 +111,10 @@ ZEND_BEGIN_ARG_INFO_EX(opencv_erode_arginfo, 0, 0, 7) ZEND_END_ARG_INFO() PHP_FUNCTION(opencv_erode); +ZEND_BEGIN_ARG_INFO_EX(opencv_get_structuring_element_arginfo, 0, 0, 3) + ZEND_ARG_INFO(0, shape) + ZEND_ARG_INFO(0, ksize) + ZEND_ARG_INFO(0, anchor) +ZEND_END_ARG_INFO() +PHP_FUNCTION(opencv_get_structuring_element); #endif //OPENCV_OPENCV_IMGPROC_H From b6289db72945e5e327bee221377f7d385f07704f Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Sun, 13 Aug 2017 22:56:20 +0800 Subject: [PATCH 08/11] add get_structuring_element.phpt Signed-off-by: MaleicAcid --- tests/get_structuring_element.phpt | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/get_structuring_element.phpt diff --git a/tests/get_structuring_element.phpt b/tests/get_structuring_element.phpt new file mode 100644 index 0000000..2d5edce --- /dev/null +++ b/tests/get_structuring_element.phpt @@ -0,0 +1,33 @@ +--TEST-- +get_structuring_element function test +--SKIPIF-- + +--FILE-- +print(); + +--EXPECT-- +object(CV\Mat)#3 (4) { + ["type":"CV\Mat":private]=> + int(0) + ["rows"]=> + int(7) + ["cols"]=> + int(7) + ["dims"]=> + int(2) +} +[ 0, 0, 0, 1, 0, 0, 0; + 0, 1, 1, 1, 1, 1, 0; + 1, 1, 1, 1, 1, 1, 1; + 1, 1, 1, 1, 1, 1, 1; + 1, 1, 1, 1, 1, 1, 1; + 0, 1, 1, 1, 1, 1, 0; + 0, 0, 0, 1, 0, 0, 0] \ No newline at end of file From b3541d03abdd09d4da31378d90edae65bc94d6cf Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Sun, 13 Aug 2017 22:58:35 +0800 Subject: [PATCH 09/11] add get_structuring_element.phpt Signed-off-by: MaleicAcid --- tests/get_structuring_element.phpt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/get_structuring_element.phpt b/tests/get_structuring_element.phpt index 2d5edce..e36f968 100644 --- a/tests/get_structuring_element.phpt +++ b/tests/get_structuring_element.phpt @@ -10,6 +10,7 @@ $morph_elem = 2; $morph_size = 3; $element = getStructuringElement( $morph_elem, new Size( 2*$morph_size + 1, 2*$morph_size+1 ), new Point( $morph_size, $morph_size )); + var_dump($element); $element->print(); From db7e3b949e066c544e855e11df175881753c8b28 Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Sun, 13 Aug 2017 22:59:18 +0800 Subject: [PATCH 10/11] add get_structuring_element.phpt Signed-off-by: MaleicAcid --- tests/get_structuring_element.phpt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/get_structuring_element.phpt b/tests/get_structuring_element.phpt index e36f968..5d4e0ec 100644 --- a/tests/get_structuring_element.phpt +++ b/tests/get_structuring_element.phpt @@ -8,8 +8,7 @@ namespace CV; $morph_elem = 2; $morph_size = 3; -$element = getStructuringElement( $morph_elem, new Size( 2*$morph_size + 1, 2*$morph_size+1 ), new Point( $morph_size, $morph_size )); - +$element = getStructuringElement($morph_elem, new Size(2*$morph_size + 1, 2*$morph_size+1), new Point($morph_size, $morph_size)); var_dump($element); $element->print(); From 37a2f4d153d9c2dd4d09a7443a570e022ed096ff Mon Sep 17 00:00:00 2001 From: MaleicAcid Date: Mon, 14 Aug 2017 00:20:36 +0800 Subject: [PATCH 11/11] =?UTF-8?q?add=20Mat::ones=20(used=20in=20=E3=80=8AM?= =?UTF-8?q?aking=20your=20own=20linear=20filters!=E3=80=8Bto=20create=20ke?= =?UTF-8?q?rnel)=20update=20mat.phpt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaleicAcid --- source/opencv2/core/opencv_mat.cc | 19 +++++++++++++++++++ tests/mat.phpt | 25 ++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/source/opencv2/core/opencv_mat.cc b/source/opencv2/core/opencv_mat.cc index d62ded1..8044247 100644 --- a/source/opencv2/core/opencv_mat.cc +++ b/source/opencv2/core/opencv_mat.cc @@ -128,6 +128,24 @@ PHP_METHOD(opencv_mat, empty) RETURN_LONG(obj->mat->empty()); } +PHP_METHOD(opencv_mat, ones) +{ + long rows, cols, flags; + if (zend_parse_parameters(ZEND_NUM_ARGS(), "lll", &rows, &cols, &flags) == FAILURE) { + RETURN_NULL(); + } + zval instance; + object_init_ex(&instance, opencv_mat_ce); + opencv_mat_object *obj = Z_PHP_MAT_OBJ_P(&instance); + + Mat im = Mat::ones((int)rows, (int)cols, (int)flags); + + obj->mat=new Mat(im); + //update php Mat object property + opencv_mat_update_property_by_c_mat(&instance, obj->mat); + + RETURN_ZVAL(&instance,0,0); //return php Mat object +} PHP_METHOD(opencv_mat, zeros) { @@ -445,6 +463,7 @@ const zend_function_entry opencv_mat_methods[] = { PHP_ME(opencv_mat, print, NULL, ZEND_ACC_PUBLIC) PHP_ME(opencv_mat, size, NULL, ZEND_ACC_PUBLIC) PHP_ME(opencv_mat, clone, NULL, ZEND_ACC_PUBLIC) + PHP_ME(opencv_mat, ones, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) PHP_ME(opencv_mat, zeros, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) PHP_MALIAS(opencv_mat, zerosBySize ,zeros_by_size, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) PHP_MALIAS(opencv_mat, isContinuous ,is_continuous, NULL, ZEND_ACC_PUBLIC) diff --git a/tests/mat.phpt b/tests/mat.phpt index 393ae5b..6f70802 100644 --- a/tests/mat.phpt +++ b/tests/mat.phpt @@ -15,6 +15,9 @@ $mat->print(Formatter::FMT_PYTHON); $zeros = Mat::zeros(10,10,CV_8UC1); var_dump($zeros); $zeros->print(Formatter::FMT_PYTHON); +$ones = Mat::ones(10,10,CV_8UC1); +var_dump($ones); +$ones->print(Formatter::FMT_PYTHON); ?> --EXPECT-- object(CV\Mat)#2 (4) { @@ -51,4 +54,24 @@ object(CV\Mat)#3 (4) { [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] \ No newline at end of file + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] +object(CV\Mat)#4 (4) { + ["type":"CV\Mat":private]=> + int(0) + ["rows"]=> + int(10) + ["cols"]=> + int(10) + ["dims"]=> + int(2) +} +[[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] \ No newline at end of file