@@ -47,7 +47,7 @@ zend_class_entry *opencv_dnn_net_ce;
4747
4848zend_class_entry *opencv_base_dnn_net_ce;
4949
50- PHP_METHOD (opencv_dnn_net, blobFromImage )
50+ PHP_FUNCTION (opencv_dnn_blob_from_image )
5151{
5252 zval *image_zval, *size_zval, *mean_zval;
5353 double scalefactor = 1 .;
@@ -78,7 +78,7 @@ PHP_METHOD(opencv_dnn_net, blobFromImage)
7878 RETURN_ZVAL (&instance,0 ,0 ); // return php Mat object
7979}
8080
81- PHP_METHOD (opencv_dnn_net, readNetFromTorch )
81+ PHP_FUNCTION (opencv_dnn_read_net_from_torch )
8282{
8383 char *filename;
8484 size_t filename_len;
@@ -94,12 +94,7 @@ PHP_METHOD(opencv_dnn_net, readNetFromTorch)
9494 RETURN_ZVAL (&instance,0 ,0 );
9595}
9696
97- ZEND_BEGIN_ARG_INFO_EX (opencv_dnn_net_readNetFromCaffe_arginfo, 0 , 0 , 2 )
98- ZEND_ARG_INFO(0 , prototxt)
99- ZEND_ARG_INFO(0 , caffeModel)
100- ZEND_END_ARG_INFO()
101-
102- PHP_METHOD(opencv_dnn_net, readNetFromCaffe)
97+ PHP_FUNCTION (opencv_dnn_read_net_from_caffe)
10398{
10499 char *prototxt, *caffeModel;
105100 size_t prototxt_len, caffeModel_len;
@@ -129,6 +124,36 @@ PHP_METHOD(opencv_dnn_net, readNetFromCaffe)
129124 RETURN_ZVAL (&instance,0 ,0 );
130125}
131126
127+ PHP_FUNCTION (opencv_dnn_read_net_from_tensorflow)
128+ {
129+ char *model, *config;
130+ size_t model_len, config_len;
131+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " ss" , &model, &model_len, &config, &config_len) == FAILURE) {
132+ RETURN_NULL ();
133+ }
134+
135+ ifstream modelFile;
136+ modelFile.open (model);// open the input file
137+ stringstream modelStream;
138+ modelStream << modelFile.rdbuf ();// read the file
139+ string modelData = modelStream.str ();
140+
141+ ifstream configFile;
142+ configFile.open (config, ios::binary);// open the input file
143+ stringstream configStream;
144+ configStream << configFile.rdbuf ();// read the file
145+ string configData = configStream.str ();
146+
147+ zval instance;
148+ object_init_ex (&instance, opencv_dnn_net_ce);
149+ opencv_dnn_net_object *obj = Z_PHP_DNN_NET_OBJ_P (&instance);
150+
151+ // obj->DNNNet = readNetFromTensorflow(modelData.c_str(), modelData.size());
152+ obj->DNNNet = readNetFromTensorflow (modelData.c_str (), modelData.size (), configData.c_str (), configData.size ());
153+
154+ RETURN_ZVAL (&instance,0 ,0 );
155+ }
156+
132157PHP_METHOD (opencv_dnn_net, setInput)
133158{
134159 zval *image_zval;
@@ -168,9 +193,6 @@ PHP_METHOD(opencv_dnn_net, forward)
168193 * opencv_dnn_net_methods[]
169194 */
170195const zend_function_entry opencv_dnn_net_methods[] = {
171- PHP_ME (opencv_dnn_net, blobFromImage, NULL , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
172- PHP_ME (opencv_dnn_net, readNetFromTorch, NULL , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
173- PHP_ME (opencv_dnn_net, readNetFromCaffe, NULL , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
174196 PHP_ME (opencv_dnn_net, setInput, NULL , ZEND_ACC_PUBLIC)
175197 PHP_ME (opencv_dnn_net, forward, NULL , ZEND_ACC_PUBLIC)
176198 PHP_FE_END
@@ -193,7 +215,7 @@ zend_object* opencv_dnn_net_handler(zend_class_entry *type)
193215 return &obj->std ;
194216}
195217
196- void opencv_dnn_net_init (int module_number){
218+ void opencv_dnn_init (int module_number){
197219 zend_class_entry ce;
198220 INIT_NS_CLASS_ENTRY (ce,OPENCV_DNN_NS, " Net" , opencv_dnn_net_methods);
199221 opencv_dnn_net_ce = zend_register_internal_class_ex (&ce, opencv_dnn_net_ce);
@@ -204,7 +226,7 @@ void opencv_dnn_net_init(int module_number){
204226
205227#else
206228
207- void opencv_dnn_net_init (int module_number){
229+ void opencv_dnn_init (int module_number){
208230
209231}
210232
0 commit comments