Skip to content

Commit cae6db3

Browse files
committed
CV\VideoCapture->open function
1 parent 2a62ccd commit cae6db3

File tree

1 file changed

+101
-1
lines changed

1 file changed

+101
-1
lines changed

source/opencv2/opencv_videoio.cc

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
#include "../../php_opencv.h"
1717
#include "opencv_videoio.h"
18+
#include "../../opencv_exception.h"
1819

1920
zend_class_entry *opencv_video_capture_ce;
2021

@@ -34,15 +35,114 @@ zend_object* opencv_video_capture_create_handler(zend_class_entry *type)
3435

3536
PHP_METHOD(opencv_video_capture, __construct)
3637
{
38+
zval *zval1 = NULL;
39+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|z", &zval1) == FAILURE) {
40+
RETURN_NULL();
41+
}
3742
opencv_video_capture_object *obj = Z_PHP_VIDEO_CAPTURE_P(getThis());
38-
obj->videoCapture = new VideoCapture();
43+
char *error_message;
44+
VideoCapture *videoCapture;
45+
if(zval1 == NULL){
46+
videoCapture = new VideoCapture();
47+
}else{
48+
again:
49+
switch (Z_TYPE_P(zval1)) {
50+
case IS_LONG:
51+
try{
52+
int long_val = (int)zval_get_long(zval1);
53+
videoCapture = new VideoCapture(long_val);
54+
}catch (Exception e){
55+
opencv_throw_exception(e.what());
56+
}
57+
break;
58+
case IS_DOUBLE:
59+
try{
60+
int double_val = (int)zval_get_double(zval1);
61+
videoCapture = new VideoCapture(double_val);
62+
}catch (Exception e){
63+
opencv_throw_exception(e.what());
64+
}
65+
break;
66+
case IS_STRING:
67+
try{
68+
String string_val=(String)ZSTR_VAL(zval_get_string(zval1));
69+
videoCapture = new VideoCapture(string_val);
70+
}catch (Exception e){
71+
opencv_throw_exception(e.what());
72+
}
73+
break;
74+
case IS_REFERENCE:
75+
zval1 = Z_REFVAL_P(zval1);
76+
goto again;
77+
break;
78+
default:
79+
error_message = (char*)malloc(strlen("Can't write file on unknow type.")+ 1);
80+
strcpy(error_message,"Can't write file on unknow type.");
81+
opencv_throw_exception(error_message);
82+
free(error_message);
83+
break;
84+
}
85+
}
86+
87+
obj->videoCapture = videoCapture;
88+
}
89+
90+
PHP_METHOD(opencv_video_capture, open)
91+
{
92+
zval *zval1 = NULL;
93+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zval1) == FAILURE) {
94+
RETURN_NULL();
95+
}
96+
opencv_video_capture_object *obj = Z_PHP_VIDEO_CAPTURE_P(getThis());
97+
char *error_message;
98+
VideoCapture *videoCapture;
99+
again:
100+
switch (Z_TYPE_P(zval1)) {
101+
case IS_LONG:
102+
try{
103+
int long_val = (int)zval_get_long(zval1);
104+
obj->videoCapture->open(long_val);
105+
}catch (Exception e){
106+
opencv_throw_exception(e.what());
107+
}
108+
break;
109+
case IS_DOUBLE:
110+
try{
111+
int double_val = (int)zval_get_double(zval1);
112+
obj->videoCapture->open(double_val);
113+
}catch (Exception e){
114+
opencv_throw_exception(e.what());
115+
}
116+
break;
117+
case IS_STRING:
118+
try{
119+
String string_val=(String)ZSTR_VAL(zval_get_string(zval1));
120+
obj->videoCapture->open(string_val);
121+
}catch (Exception e){
122+
opencv_throw_exception(e.what());
123+
}
124+
break;
125+
case IS_REFERENCE:
126+
zval1 = Z_REFVAL_P(zval1);
127+
goto again;
128+
break;
129+
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+
break;
135+
}
136+
137+
obj->videoCapture = videoCapture;
39138
}
40139

41140
/**
42141
* opencv_video_capture_methods[]
43142
*/
44143
const zend_function_entry opencv_video_capture_methods[] = {
45144
PHP_ME(opencv_video_capture, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
145+
PHP_ME(opencv_video_capture, open, NULL, ZEND_ACC_PUBLIC)
46146
PHP_FE_END
47147
};
48148
/* }}} */

0 commit comments

Comments
 (0)