Skip to content

Commit 23a1e63

Browse files
committed
Merge branch 'dev'
2 parents 9d1225f + 9e89bb3 commit 23a1e63

File tree

3 files changed

+74
-13
lines changed

3 files changed

+74
-13
lines changed

opencv.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ const zend_function_entry opencv_functions[] = {
229229
ZEND_NS_NAMED_FE(OPENCV_NS, convertScaleAbs, ZEND_FN(opencv_convert_scale_abs), opencv_convert_scale_abs_arginfo)
230230
ZEND_NS_NAMED_FE(OPENCV_NS, getStructuringElement, ZEND_FN(opencv_get_structuring_element), opencv_get_structuring_element_arginfo)
231231
ZEND_NS_NAMED_FE(OPENCV_NS, threshold, ZEND_FN(opencv_threshold), opencv_threshold_arginfo)
232+
ZEND_NS_NAMED_FE(OPENCV_NS, morphologyEx, ZEND_FN(opencv_morphology_ex), opencv_morphology_ex_arginfo)
232233
PHP_FE_END /* Must be the last line in opencv_functions[] */
233234
};
234235
/* }}} */

source/opencv2/opencv_imgproc.cc

Lines changed: 61 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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){
9999
PHP_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

source/opencv2/opencv_imgproc.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,16 @@ ZEND_BEGIN_ARG_INFO_EX(opencv_threshold_arginfo, 0, 0, 5)
182182
ZEND_END_ARG_INFO()
183183
PHP_FUNCTION(opencv_threshold);
184184

185+
ZEND_BEGIN_ARG_INFO_EX(opencv_morphology_ex_arginfo, 0, 0, 8)
186+
ZEND_ARG_INFO(0, src)
187+
ZEND_ARG_INFO(1, dst)
188+
ZEND_ARG_INFO(0, op)
189+
ZEND_ARG_INFO(0, kernel)
190+
ZEND_ARG_INFO(0, anchor)
191+
ZEND_ARG_INFO(0, iterations)
192+
ZEND_ARG_INFO(0, borderType)
193+
ZEND_ARG_INFO(0, borderValue)
194+
ZEND_END_ARG_INFO()
195+
PHP_FUNCTION(opencv_morphology_ex);
196+
185197
#endif //OPENCV_OPENCV_IMGPROC_H

0 commit comments

Comments
 (0)