@@ -131,8 +131,8 @@ PHP_METHOD(opencv_mat, empty)
131131
132132PHP_METHOD (opencv_mat, zeros)
133133{
134- long rows, cols, flags = IMREAD_COLOR ;
135- if (zend_parse_parameters (ZEND_NUM_ARGS (), " ll|l " , &rows, &cols, &flags) == FAILURE) {
134+ long rows, cols, flags;
135+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " lll " , &rows, &cols, &flags) == FAILURE) {
136136 RETURN_NULL ();
137137 }
138138 zval instance;
@@ -148,6 +148,27 @@ PHP_METHOD(opencv_mat, zeros)
148148 RETURN_ZVAL (&instance,0 ,0 ); // return php Mat object
149149}
150150
151+ PHP_METHOD (opencv_mat, zeros_by_size)
152+ {
153+ zval *size_zval;
154+ long flags;
155+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Ol" , &size_zval, opencv_size_ce, &flags) == FAILURE) {
156+ RETURN_NULL ();
157+ }
158+
159+ opencv_size_object *size_object = Z_PHP_SIZE_OBJ_P (size_zval);
160+ zval instance;
161+ object_init_ex (&instance, opencv_mat_ce);
162+ opencv_mat_object *obj = Z_PHP_MAT_OBJ_P (&instance);
163+
164+ Mat im = Mat::zeros (*size_object->size , (int )flags);
165+
166+ obj->mat =new Mat (im);
167+ opencv_mat_update_property_by_c_mat (&instance, obj->mat );
168+
169+ RETURN_ZVAL (&instance,0 ,0 );
170+ }
171+
151172
152173/* *
153174 * Mat->clone()
@@ -261,7 +282,7 @@ PHP_METHOD(opencv_mat, get_image_roi)
261282 opencv_mat_object *obj = Z_PHP_MAT_OBJ_P (getThis ());
262283 try {
263284 Mat roi = (*obj->mat )(*rect_object->rect );
264- new_obj->mat = new Mat (roi);
285+ new_obj->mat = new Mat (roi);
265286 }catch (Exception exception){
266287 const char * err_msg = exception.what ();
267288 opencv_throw_exception (err_msg);// throw exception
@@ -393,6 +414,24 @@ PHP_METHOD(opencv_mat, convert_to){
393414 RETURN_NULL ();
394415}
395416
417+ PHP_METHOD (opencv_mat, size)
418+ {
419+ zval instance;
420+ object_init_ex (&instance, opencv_size_ce);
421+ opencv_size_object *size_object = Z_PHP_SIZE_OBJ_P (&instance);
422+
423+ opencv_mat_object *obj = Z_PHP_MAT_OBJ_P (getThis ());
424+ try {
425+ Size size = obj->mat ->size ();
426+ size_object->size = new Size (size);
427+ }catch (Exception e){
428+ opencv_throw_exception (e.what ());
429+ RETURN_NULL ();
430+ }
431+ opencv_size_update_property_by_c_size (&instance, size_object->size );
432+ RETURN_ZVAL (&instance,0 ,0 );
433+ }
434+
396435
397436/* *
398437 * opencv_mat_methods[]
@@ -404,7 +443,9 @@ const zend_function_entry opencv_mat_methods[] = {
404443 PHP_ME (opencv_mat, channels, NULL , ZEND_ACC_PUBLIC)
405444 PHP_ME (opencv_mat, empty, NULL , ZEND_ACC_PUBLIC)
406445 PHP_ME (opencv_mat, print, NULL , ZEND_ACC_PUBLIC)
446+ PHP_ME (opencv_mat, size, NULL , ZEND_ACC_PUBLIC)
407447 PHP_ME (opencv_mat, zeros, NULL , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
448+ PHP_MALIAS (opencv_mat, zerosBySize ,zeros_by_size, NULL , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
408449 PHP_MALIAS (opencv_mat, isContinuous ,is_continuous, NULL , ZEND_ACC_PUBLIC)
409450 PHP_MALIAS (opencv_mat, isSubmatrix ,is_submatrix, NULL , ZEND_ACC_PUBLIC)
410451 PHP_ME (opencv_mat, row, NULL , ZEND_ACC_PUBLIC)
0 commit comments