Skip to content

Commit a44ea45

Browse files
committed
Merge branch 'dev'
2 parents b1bb67a + 1266665 commit a44ea45

File tree

8 files changed

+47
-72
lines changed

8 files changed

+47
-72
lines changed

opencv.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ const zend_function_entry opencv_functions[] = {
213213
ZEND_NS_NAMED_FE(OPENCV_NS, resize, ZEND_FN(opencv_resize), opencv_resize_arginfo)
214214
ZEND_NS_NAMED_FE(OPENCV_NS, putText, ZEND_FN(opencv_put_text), NULL)
215215
ZEND_NS_NAMED_FE(OPENCV_NS, absdiff, ZEND_FN(opencv_absdiff), opencv_absdiff_arginfo)
216+
ZEND_NS_NAMED_FE(OPENCV_NS, getTrackBarPos, ZEND_FN(opencv_get_track_bar_pos), NULL)
216217
PHP_FE_END /* Must be the last line in opencv_functions[] */
217218
};
218219
/* }}} */

source/opencv2/core/opencv_mat.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,10 +284,8 @@ PHP_METHOD(opencv_mat, copy_to)
284284
m_object = Z_PHP_MAT_OBJ_P(m_real_zval);
285285
m_object->mat = new Mat(dst);
286286
}else{
287-
char *error_message = (char*)malloc(strlen("copy expect param is Mat object or null.")+ 1);
288-
strcpy(error_message,"copy expect param is Mat object or null.");
289-
opencv_throw_exception(error_message);
290-
free(error_message);
287+
opencv_throw_exception("copy expect param is Mat object or null.");
288+
RETURN_NULL();
291289
}
292290
opencv_mat_object *this_object = Z_PHP_MAT_OBJ_P(getThis());
293291
try {

source/opencv2/core/opencv_persistence.cc

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ PHP_METHOD(opencv_file_storage, write){
121121
//todo check name len and value len
122122
try{
123123
String string_val=(String)ZSTR_VAL(zval_get_string(val_zval));
124-
fs<< name << string_val;
125124
}catch (Exception e){
126125
opencv_throw_exception(e.what());
127126
}
@@ -131,10 +130,7 @@ PHP_METHOD(opencv_file_storage, write){
131130
break;
132131
case IS_ARRAY:
133132
//todo only one type array
134-
error_message = (char*)malloc(strlen("Can't write file on array.")+ 1);
135-
strcpy(error_message,"Can't write file object on array.");
136-
opencv_throw_exception(error_message);
137-
free(error_message);
133+
opencv_throw_exception("Can't write file on array.");
138134
// if (zend_hash_num_elements(Z_ARRVAL_P(op))) {
139135
// result = 1;
140136
// }
@@ -145,26 +141,17 @@ PHP_METHOD(opencv_file_storage, write){
145141
opencv_mat_object *mat_object = Z_PHP_MAT_OBJ_P(val_zval);
146142
fs<< name << *(mat_object->mat);
147143
}else{
148-
error_message = (char*)malloc(strlen("Can't write file object only Mat.")+ 1);
149-
strcpy(error_message,"Can't write file object only Mat.");
150-
opencv_throw_exception(error_message);
151-
free(error_message);
144+
opencv_throw_exception("Can't write file object only Mat.");
152145
}
153146
break;
154147
case IS_RESOURCE:
155-
error_message = (char*)malloc(strlen("Can't write file on resource.")+ 1);
156-
strcpy(error_message,"Can't write file on resource.");
157-
opencv_throw_exception(error_message);
158-
free(error_message);
148+
opencv_throw_exception("Can't write file on resource.");
159149
case IS_REFERENCE:
160150
val_zval = Z_REFVAL_P(val_zval);
161151
goto again;
162152
break;
163153
default:
164-
error_message = (char*)malloc(strlen("Can't write file on unknow type.")+ 1);
165-
strcpy(error_message,"Can't write file on unknow type.");
166-
opencv_throw_exception(error_message);
167-
free(error_message);
154+
opencv_throw_exception("Can't write file on unknow type.");
168155
break;
169156
}
170157
RETURN_NULL();

source/opencv2/face/opencv_facerec.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,7 @@ PHP_METHOD(opencv_lbph_face_recognizer, train)
6161
array_val_zval = Z_REFVAL_P(array_val_zval);
6262
goto again1;
6363
} else {
64-
char *error_message = (char*)malloc(strlen("array value just Mat object") + 1);
65-
strcpy(error_message,"array value just Mat object");
66-
opencv_throw_exception(error_message);
67-
free(error_message);
64+
opencv_throw_exception("array value just Mat object.");
6865
RETURN_NULL();
6966
}
7067
}ZEND_HASH_FOREACH_END();
@@ -76,10 +73,7 @@ PHP_METHOD(opencv_lbph_face_recognizer, train)
7673
array_val_zval = Z_REFVAL_P(array_val_zval);
7774
goto again2;
7875
} else {
79-
char *error_message = (char*)malloc(strlen("array value just number") + 1);
80-
strcpy(error_message,"array value just number");
81-
opencv_throw_exception(error_message);
82-
free(error_message);
76+
opencv_throw_exception("array value just number.");
8377
RETURN_NULL();
8478
}
8579
}ZEND_HASH_FOREACH_END();

source/opencv2/opencv_core.cc

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,7 @@ PHP_FUNCTION(opencv_merge){
178178
unsigned long channel_count = zend_hash_num_elements(Z_ARRVAL_P(channels_zval));
179179
std::vector<Mat> channels;
180180
if(channel_count == 0){
181-
char *error_message = (char*)malloc(strlen("array lenght must be >=1") + 1);
182-
strcpy(error_message,"array lenght must be >=1");
183-
opencv_throw_exception(error_message);
184-
free(error_message);
181+
opencv_throw_exception("array lenght must be >=1");
185182
RETURN_NULL();
186183
}
187184

@@ -198,10 +195,7 @@ PHP_FUNCTION(opencv_merge){
198195
array_val_zval = Z_REFVAL_P(array_val_zval);
199196
goto again;
200197
} else {
201-
char *error_message = (char*)malloc(strlen("array value just Mat object") + 1);
202-
strcpy(error_message,"array value just Mat object");
203-
opencv_throw_exception(error_message);
204-
free(error_message);
198+
opencv_throw_exception("array value just Mat object.");
205199
RETURN_NULL();
206200
}
207201
}ZEND_HASH_FOREACH_END();
@@ -298,11 +292,11 @@ PHP_FUNCTION(opencv_copy_make_border){
298292
*/
299293
PHP_FUNCTION(opencv_dft){
300294
zval *src_zval, *array_val_zval, *dst_zval;
301-
long flags, nonzero_rows;
295+
long flags = 0, nonzero_rows = 0;
302296
opencv_mat_object *dst_object;
303297

304298

305-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oz", &src_zval, opencv_mat_ce, &dst_zval) == FAILURE) {
299+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oz|ll", &src_zval, opencv_mat_ce, &dst_zval, &flags, &nonzero_rows) == FAILURE) {
306300
RETURN_NULL();
307301
}
308302

@@ -395,21 +389,17 @@ PHP_FUNCTION(opencv_absdiff){
395389
int flag = 0;//dst 1 mat,0 scalar
396390

397391
if(Z_TYPE_P(src1_zval) != IS_OBJECT || Z_TYPE_P(src2_zval) != IS_OBJECT){
398-
char *error_message = (char*)malloc(strlen("src1 and src1 parameter must be Mat or Scalar object.") + 1);
399-
strcpy(error_message,"src1 parameter must be Mat or Scalar object.");
400-
opencv_throw_exception(error_message);//throw exception
401-
free(error_message);
392+
opencv_throw_exception("src1 and src2 parameter must be Mat or Scalar object.");
393+
RETURN_NULL();
402394
}
403395

404396
if(Z_OBJCE_P(src1_zval) == opencv_mat_ce){
405397
src1_mat_object = Z_PHP_MAT_OBJ_P(src1_zval);
406398
}else if(Z_OBJCE_P(src1_zval) == opencv_scalar_ce){
407399
src1_scalar_object = Z_PHP_SCALAR_OBJ_P(src1_zval);
408400
}else{
409-
char *error_message = (char*)malloc(strlen("src1 parameter must be Mat or Scalar object.") + 1);
410-
strcpy(error_message,"src1 parameter must be Mat or Scalar object.");
411-
opencv_throw_exception(error_message);//throw exception
412-
free(error_message);
401+
opencv_throw_exception("src1 parameter must be Mat or Scalar object.");
402+
RETURN_NULL();
413403
}
414404

415405
if(Z_OBJCE_P(src2_zval) == opencv_mat_ce){
@@ -425,10 +415,8 @@ PHP_FUNCTION(opencv_absdiff){
425415
flag = 2;
426416
}
427417
}else{
428-
char *error_message = (char*)malloc(strlen("src2 parameter must be Mat or Scalar object.") + 1);
429-
strcpy(error_message,"src2 parameter must be Mat or Scalar object.");
430-
opencv_throw_exception(error_message);//throw exception
431-
free(error_message);
418+
opencv_throw_exception("src2 parameter must be Mat or Scalar object.");
419+
RETURN_NULL();
432420
}
433421

434422
zval *dst_real_zval = Z_REFVAL_P(dst_zval);
@@ -475,6 +463,8 @@ PHP_FUNCTION(opencv_absdiff){
475463
opencv_mat_update_property_by_c_mat(dst_real_zval, dst_mat_object->mat);
476464
break;
477465
default:
466+
opencv_throw_exception("absdiff function error.");
467+
RETURN_NULL();
478468
break;
479469
}
480470
}
@@ -507,10 +497,7 @@ PHP_FUNCTION(opencv_add){
507497
src1_scalar_object = Z_PHP_SCALAR_OBJ_P(src1_zval);
508498
}
509499
} else{
510-
char *error_message = (char*)malloc(strlen("src1 parameter must be Mat or Scalar object.") + 1);
511-
strcpy(error_message,"src1 parameter must be Mat or Scalar object.");
512-
opencv_throw_exception(error_message);//throw exception
513-
free(error_message);
500+
opencv_throw_exception("src1 parameter must be Mat or Scalar object.");
514501
}
515502

516503
if(Z_TYPE_P(src2_zval) == IS_OBJECT && (Z_OBJCE_P(src2_zval) == opencv_mat_ce || Z_OBJCE_P(src2_zval) == opencv_scalar_ce)){
@@ -520,10 +507,7 @@ PHP_FUNCTION(opencv_add){
520507
src2_scalar_object = Z_PHP_SCALAR_OBJ_P(src2_zval);
521508
}
522509
} else{
523-
char *error_message = (char*)malloc(strlen("src2 parameter must be Mat or Scalar object.") + 1);
524-
strcpy(error_message,"src2 parameter must be Mat or Scalar object.");
525-
opencv_throw_exception(error_message);//throw exception
526-
free(error_message);
510+
opencv_throw_exception("src2 parameter must be Mat or Scalar object.");//throw exception
527511
}
528512

529513
zval *dst_real_zval = Z_REFVAL_P(dst_zval);

source/opencv2/opencv_highgui.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,19 @@ PHP_FUNCTION(opencv_destroy_window){
182182
}
183183

184184
RETURN_NULL();
185+
}
185186

187+
PHP_FUNCTION(opencv_get_track_bar_pos){
188+
char *trackbarname, *winname;
189+
long trackbarname_len, winname_len;
186190

191+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &trackbarname, &trackbarname_len, &winname, &winname_len) == FAILURE) {
192+
return;
193+
}
194+
RETURN_LONG(getTrackbarPos(trackbarname, winname))
187195
}
188196

189197

190-
191198
void opencv_highgui_init(int module_number)
192199
{
193200
/**

source/opencv2/opencv_highgui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ PHP_FUNCTION(opencv_wait_key);
2525
PHP_FUNCTION(opencv_named_window);
2626
PHP_FUNCTION(opencv_create_trackbar);
2727
PHP_FUNCTION(opencv_destroy_window);
28+
PHP_FUNCTION(opencv_get_track_bar_pos);
2829

2930
#endif //OPENCV_OPENCV_HIGHGUI_H

source/opencv2/opencv_videoio.cc

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ PHP_METHOD(opencv_video_capture, __construct)
5454
videoCapture = new VideoCapture(long_val);
5555
}catch (Exception e){
5656
opencv_throw_exception(e.what());
57+
RETURN_NULL();
5758
}
5859
break;
5960
case IS_DOUBLE:
@@ -62,6 +63,7 @@ PHP_METHOD(opencv_video_capture, __construct)
6263
videoCapture = new VideoCapture(double_val);
6364
}catch (Exception e){
6465
opencv_throw_exception(e.what());
66+
RETURN_NULL();
6567
}
6668
break;
6769
case IS_STRING:
@@ -70,17 +72,16 @@ PHP_METHOD(opencv_video_capture, __construct)
7072
videoCapture = new VideoCapture(string_val);
7173
}catch (Exception e){
7274
opencv_throw_exception(e.what());
75+
RETURN_NULL();
7376
}
7477
break;
7578
case IS_REFERENCE:
7679
zval1 = Z_REFVAL_P(zval1);
7780
goto again;
7881
break;
7982
default:
80-
error_message = (char*)malloc(strlen("Can't write file on unknow type.")+ 1);
81-
strcpy(error_message,"Can't write file on unknow type.");
82-
opencv_throw_exception(error_message);
83-
free(error_message);
83+
opencv_throw_exception("Can't write file on unknow type.");
84+
RETURN_NULL();
8485
break;
8586
}
8687
}
@@ -95,44 +96,46 @@ PHP_METHOD(opencv_video_capture, open)
9596
RETURN_NULL();
9697
}
9798
opencv_video_capture_object *obj = Z_PHP_VIDEO_CAPTURE_P(getThis());
98-
char *error_message;
99+
bool return_bool;
99100
again:
100101
switch (Z_TYPE_P(zval1)) {
101102
case IS_LONG:
102103
try{
103104
int long_val = (int)zval_get_long(zval1);
104-
obj->videoCapture->open(long_val);
105+
return_bool = obj->videoCapture->open(long_val);
105106
}catch (Exception e){
106107
opencv_throw_exception(e.what());
108+
RETURN_NULL();
107109
}
108110
break;
109111
case IS_DOUBLE:
110112
try{
111113
int double_val = (int)zval_get_double(zval1);
112-
obj->videoCapture->open(double_val);
114+
return_bool = obj->videoCapture->open(double_val);
113115
}catch (Exception e){
114116
opencv_throw_exception(e.what());
117+
RETURN_NULL();
115118
}
116119
break;
117120
case IS_STRING:
118121
try{
119122
String string_val=(String)ZSTR_VAL(zval_get_string(zval1));
120-
obj->videoCapture->open(string_val);
123+
return_bool = obj->videoCapture->open(string_val);
121124
}catch (Exception e){
122125
opencv_throw_exception(e.what());
126+
RETURN_NULL();
123127
}
124128
break;
125129
case IS_REFERENCE:
126130
zval1 = Z_REFVAL_P(zval1);
127131
goto again;
128132
break;
129133
default:
130-
error_message = (char*)malloc(strlen("Can't write file on unknow type.")+ 1);
131-
strcpy(error_message,"Can't write file on unknow type.");
132-
opencv_throw_exception(error_message);
133-
free(error_message);
134+
opencv_throw_exception("Can't write file on unknow type.");
135+
RETURN_NULL();
134136
break;
135137
}
138+
RETURN_BOOL(return_bool);
136139
}
137140

138141

0 commit comments

Comments
 (0)