@@ -42,7 +42,7 @@ PHP_FUNCTION(opencv_cv_t_color){
4242 }
4343 // get src mat object from mat_zval
4444 opencv_mat_object *src_obj = Z_PHP_MAT_OBJ_P (mat_zval);
45- cvtColor (*(src_obj->mat ),dstImg,code);
45+ cvtColor (*(src_obj->mat ), dstImg, ( int ) code);
4646
4747 // new PHP Mat bing cv::cvtColor dstImg.
4848 zval instance;
@@ -88,7 +88,7 @@ PHP_FUNCTION(opencv_ellipse){
8888 opencv_point_object *point_obj = Z_PHP_POINT_OBJ_P (point_zval);
8989 opencv_size_object *size_obj = Z_PHP_SIZE_OBJ_P (size_zval);
9090 opencv_scalar_object *scalar_obj = Z_PHP_SCALAR_OBJ_P (scalar_zval);
91- ellipse (*(mat_obj->mat ), *(point_obj->point ), *(size_obj->size ), angle, startAngle, endAngle, *(scalar_obj->scalar ), thickness, lineType ,shift);
91+ ellipse (*(mat_obj->mat ), *(point_obj->point ), *(size_obj->size ), angle, startAngle, endAngle, *(scalar_obj->scalar ), ( int ) thickness, ( int ) lineType ,( int ) shift);
9292
9393 RETURN_NULL ();
9494}
@@ -99,7 +99,7 @@ PHP_FUNCTION(opencv_ellipse){
9999PHP_FUNCTION (opencv_circle){
100100
101101 long radius, thickness = 1 , lineType = LINE_8, shift = 0 ;
102- zval *mat_zval, *point_zval, *size_zval, * scalar_zval;
102+ zval *mat_zval, *point_zval, *scalar_zval;
103103 if (zend_parse_parameters (ZEND_NUM_ARGS (), " OOlO|lll" ,
104104 &mat_zval, opencv_mat_ce,
105105 &point_zval, opencv_point_ce,
@@ -113,7 +113,7 @@ PHP_FUNCTION(opencv_circle){
113113 opencv_point_object *point_obj = Z_PHP_POINT_OBJ_P (point_zval);
114114 opencv_scalar_object *scalar_obj = Z_PHP_SCALAR_OBJ_P (scalar_zval);
115115
116- circle (*(mat_obj->mat ),*(point_obj->point ), radius, *(scalar_obj->scalar ),thickness,lineType ,shift);
116+ circle (*(mat_obj->mat ),*(point_obj->point ), ( int ) radius, *(scalar_obj->scalar ),( int ) thickness, ( int ) lineType ,( int ) shift);
117117
118118 RETURN_NULL ();
119119}
@@ -218,7 +218,7 @@ PHP_FUNCTION(opencv_line){
218218 opencv_point_object *end_point_obj = Z_PHP_POINT_OBJ_P (end_point_zval);
219219 opencv_scalar_object *scalar_obj = Z_PHP_SCALAR_OBJ_P (scalar_zval);
220220
221- line (*(mat_obj->mat ),*(start_point_obj->point ),*(end_point_obj->point ),*(scalar_obj->scalar ), thickness, lineType, shift);
221+ line (*(mat_obj->mat ),*(start_point_obj->point ),*(end_point_obj->point ),*(scalar_obj->scalar ), ( int ) thickness, ( int ) lineType, ( int ) shift);
222222
223223 RETURN_NULL ();
224224}
@@ -244,7 +244,7 @@ PHP_FUNCTION(opencv_rectangle){
244244 opencv_mat_object *mat_obj = Z_PHP_MAT_OBJ_P (mat_zval);
245245 opencv_scalar_object *scalar_obj = Z_PHP_SCALAR_OBJ_P (color_zval);
246246
247- rectangle (*(mat_obj->mat ), Point (startX, startY), Point (endX, endY), *(scalar_obj->scalar ), thickness, lineType, shift);
247+ rectangle (*(mat_obj->mat ), Point (( int ) startX, ( int ) startY), Point (( int ) endX, ( int ) endY), *(scalar_obj->scalar ), ( int ) thickness, ( int ) lineType, ( int ) shift);
248248
249249 RETURN_NULL ();
250250}
@@ -272,7 +272,7 @@ PHP_FUNCTION(opencv_rectangle_by_point){
272272 opencv_point_object *end_point_obj = Z_PHP_POINT_OBJ_P (end_point_zval);
273273 opencv_scalar_object *scalar_obj = Z_PHP_SCALAR_OBJ_P (color_zval);
274274
275- rectangle (*(mat_obj->mat ), *(start_point_obj->point ), *(end_point_obj->point ), *(scalar_obj->scalar ), thickness, lineType, shift);
275+ rectangle (*(mat_obj->mat ), *(start_point_obj->point ), *(end_point_obj->point ), *(scalar_obj->scalar ), ( int ) thickness, ( int ) lineType, ( int ) shift);
276276
277277 RETURN_NULL ();
278278}
@@ -719,7 +719,7 @@ PHP_FUNCTION(opencv_sobel){
719719 dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
720720 dst_object->mat = new Mat (dst);
721721 }
722- Sobel (*src_object->mat , *dst_object->mat , (int )ddepth, (int )dx, (int )dy, (int )ksize, ( double ) scale, ( double ) delta, (int )border_type);
722+ Sobel (*src_object->mat , *dst_object->mat , (int )ddepth, (int )dx, (int )dy, (int )ksize, scale, delta, (int )border_type);
723723 RETURN_NULL ();
724724}
725725
@@ -733,7 +733,7 @@ PHP_FUNCTION(opencv_scharr){
733733 zval *src_zval, *dst_zval;
734734 long ddepth,dx,dy;
735735
736- double delta = 0.0 ,scale= 1.0 ;
736+ double delta = 0.0 , scale = 1.0 ;
737737 long border_type = BORDER_DEFAULT;
738738 opencv_mat_object *dst_object;
739739
@@ -763,7 +763,7 @@ PHP_FUNCTION(opencv_scharr){
763763 dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
764764 dst_object->mat = new Mat (dst);
765765 }
766- Scharr (*src_object->mat , *dst_object->mat , (int )ddepth, (int )dx, (int )dy, ( double ) scale, ( double ) delta, (int )border_type);
766+ Scharr (*src_object->mat , *dst_object->mat , (int )ddepth, (int )dx, (int )dy, scale, delta, (int )border_type);
767767 RETURN_NULL ();
768768}
769769
@@ -807,7 +807,7 @@ PHP_FUNCTION(opencv_laplacian){
807807 dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
808808 dst_object->mat = new Mat (dst);
809809 }
810- Laplacian (*src_object->mat , *dst_object->mat , (int )ddepth, (int )ksize, ( double ) scale, ( double ) delta, (int )border_type);
810+ Laplacian (*src_object->mat , *dst_object->mat , (int )ddepth, (int )ksize, scale, delta, (int )border_type);
811811 RETURN_NULL ();
812812}
813813
@@ -894,7 +894,7 @@ PHP_FUNCTION(opencv_convert_scale_abs){
894894 dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
895895 dst_object->mat = new Mat (dst);
896896 }
897- convertScaleAbs (*src_object->mat , *dst_object->mat , ( double ) alpha, ( double ) beta);
897+ convertScaleAbs (*src_object->mat , *dst_object->mat , alpha, beta);
898898 RETURN_NULL ();
899899}
900900
@@ -907,7 +907,6 @@ PHP_FUNCTION(opencv_get_structuring_element){
907907 long shape;
908908 zval *ksize_zval, *anchor_zval = NULL ;
909909 Point anchor = Point (-1 ,-1 );
910- opencv_mat_object *dst_object;
911910 Mat dst;
912911 if (zend_parse_parameters (ZEND_NUM_ARGS (), " lO|O" ,
913912 &shape,
@@ -934,6 +933,55 @@ PHP_FUNCTION(opencv_get_structuring_element){
934933 RETURN_ZVAL (&instance,0 ,0 ); // return php Mat object
935934}
936935
936+
937+ PHP_FUNCTION (opencv_morphology_ex){
938+
939+ zval *src_zval, *dst_zval, *kernel_zval, *anchor_zval = NULL , *border_value_zval = NULL ;
940+ long op, iterations = 1 , border_type = BORDER_CONSTANT;
941+
942+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " OzlO|OllO" ,
943+ &src_zval, opencv_mat_ce,
944+ &dst_zval,
945+ &op,
946+ &kernel_zval, opencv_mat_ce,
947+ &anchor_zval, opencv_point_ce,
948+ &iterations, &border_type,
949+ &border_value_zval, opencv_scalar_ce) == FAILURE) {
950+ RETURN_NULL ();
951+ }
952+ opencv_mat_object *src_object, *dst_object, *kernel_object;
953+ Point anchor = Point (-1 ,-1 );
954+ Scalar border_value = morphologyDefaultBorderValue ();
955+
956+ src_object = Z_PHP_MAT_OBJ_P (src_zval);
957+ kernel_object = Z_PHP_MAT_OBJ_P (kernel_zval);
958+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
959+
960+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
961+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
962+ } else {
963+ zval_ptr_dtor (dst_real_zval);
964+ zval instance;
965+ Mat dst;
966+ object_init_ex (&instance,opencv_mat_ce);
967+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
968+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
969+ dst_object->mat = new Mat (dst);
970+ }
971+
972+ if (anchor_zval != NULL ){
973+ opencv_point_object *anchor_object = Z_PHP_POINT_OBJ_P (anchor_zval);
974+ anchor = *anchor_object->point ;
975+ }
976+
977+ if (border_value_zval != NULL ){
978+ opencv_scalar_object *border_value_object = Z_PHP_SCALAR_OBJ_P (border_value_zval);
979+ border_value = *border_value_object->scalar ;
980+ }
981+ morphologyEx (*src_object->mat , *dst_object->mat , int (op), *kernel_object->mat , anchor, (int )iterations, (int )border_type, border_value);
982+ RETURN_NULL ();
983+ }
984+
937985/* *
938986 * color conversion code in CV\cvtColor,opencv enum ColorConversionCodes
939987 * @param module_number
0 commit comments