From 98ff72b98e91ba6bc54eced29b08fdfc03aad66b Mon Sep 17 00:00:00 2001 From: hihozhou Date: Wed, 20 Sep 2017 19:04:25 +0800 Subject: [PATCH] delete include config.h and check HAVE_OPENCV_FACE --- README.md | 39 ++++++------ opencv_exception.cc | 3 - source/opencv2/core/hal/opencv_interface.cc | 4 -- source/opencv2/core/opencv_base.cc | 3 - source/opencv2/core/opencv_mat.cc | 59 +++++++++++++------ source/opencv2/core/opencv_type.cc | 3 - source/opencv2/core/opencv_utility.cc | 3 - source/opencv2/face/opencv_facerec.cc | 1 + .../opencv2/imgcodecs/opencv_imgcodecs_c.cc | 3 - source/opencv2/opencv_core.cc | 3 - source/opencv2/opencv_face.cc | 17 +++++- source/opencv2/opencv_highgui.cc | 9 +-- source/opencv2/opencv_highgui.h | 7 +++ source/opencv2/opencv_imgproc.cc | 7 +++ source/opencv2/opencv_imgproc.h | 1 + 15 files changed, 94 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index f133ab0..ecbb78c 100644 --- a/README.md +++ b/README.md @@ -118,25 +118,26 @@ result: ## Features -- 1.calib3d -- 2.contrib -- 3.core -- 4.imgproc -- 5.features2d -- 6.flann -- 7.gpu -- 8.highgui -- 9.legacy -- 10.ml -- 11.nonfree -- 12.objdetect -- 13.ocl -- 14.photo -- 15.stitching -- 16.superres -- 17.ts -- 18.video -- 19.Videostab +- [x]1.[core](http://phpopencv.org/zh-cn/docs/mat.html) +- [x]2.[imgproc](http://phpopencv.org/zh-cn/docs/gausian_median_blur_bilateral_filter.html) +- [ ]3.highgui +- [ ]4.contrib +- [ ]5.features2d +- [ ]6.flann +- [ ]7.gpu +- [ ]8.calib3d +- [ ]9.legacy +- [ ]10.ml +- [ ]11.nonfree +- [ ]12.objdetect +- [ ]13.ocl +- [ ]14.photo +- [ ]15.stitching +- [ ]16.superres +- [ ]17.ts +- [ ]18.video +- [ ]19.Videostab + ## Contributors diff --git a/opencv_exception.cc b/opencv_exception.cc index 1deb492..b9f0db3 100644 --- a/opencv_exception.cc +++ b/opencv_exception.cc @@ -17,9 +17,6 @@ /* $Id$ */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "php_opencv.h" #include "zend_exceptions.h" diff --git a/source/opencv2/core/hal/opencv_interface.cc b/source/opencv2/core/hal/opencv_interface.cc index e97ec12..7a746ba 100644 --- a/source/opencv2/core/hal/opencv_interface.cc +++ b/source/opencv2/core/hal/opencv_interface.cc @@ -17,10 +17,6 @@ #include "../../../../php_opencv.h" #include "opencv_interface.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - void opencv_interface_init(int module_number) { diff --git a/source/opencv2/core/opencv_base.cc b/source/opencv2/core/opencv_base.cc index fa02194..6ff31c1 100644 --- a/source/opencv2/core/opencv_base.cc +++ b/source/opencv2/core/opencv_base.cc @@ -17,9 +17,6 @@ #include "../../../php_opencv.h" #include "opencv_base.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif void opencv_border_types_init(int module_number){ diff --git a/source/opencv2/core/opencv_mat.cc b/source/opencv2/core/opencv_mat.cc index 003966e..be45b6f 100644 --- a/source/opencv2/core/opencv_mat.cc +++ b/source/opencv2/core/opencv_mat.cc @@ -14,9 +14,6 @@ +----------------------------------------------------------------------+ */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "../../../php_opencv.h" #include "opencv_mat.h" @@ -366,6 +363,7 @@ PHP_METHOD(opencv_mat, copy_to) } /** + * //todo int,fload,double * CV\Mat->at * @param execute_data * @param return_value @@ -386,10 +384,10 @@ PHP_METHOD(opencv_mat, at) this_object->mat->at((int)row,(int)col); break; case 2: - RETURN_LONG(this_object->mat->at((int)row,(int)col)[channel]); + RETURN_LONG(this_object->mat->at((int)row,(int)col)[channel]); break; case 3: - RETURN_LONG(this_object->mat->at((int)row,(int)col)[channel]); + RETURN_LONG(this_object->mat->at((int)row,(int)col)[channel]); break; case 4: RETURN_LONG(this_object->mat->at((int)row,(int)col)[channel]); @@ -399,27 +397,52 @@ PHP_METHOD(opencv_mat, at) break; } + }else{ //set px value convert_to_long(value_zval); zend_long value = Z_LVAL_P(value_zval); - switch (this_object->mat->channels()){ - case 1: - this_object->mat->at((int)row,(int)col) = saturate_cast(value); - break; - case 2: - this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); - break; - case 3: - this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); - break; - case 4: - this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + switch(this_object->mat->depth()){ + case CV_8U: + switch (this_object->mat->channels()){ + case 1: + this_object->mat->at((int)row,(int)col) = saturate_cast(value); + break; + case 2: + this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + break; + case 3: + this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + break; + case 4: + this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + break; + default: + opencv_throw_exception("Get Mat px only channel in 1,2,3,4."); + break; + } break; default: - opencv_throw_exception("Get Mat px only channel in 1,2,3,4."); + switch (this_object->mat->channels()){ + case 1: + this_object->mat->at((int)row,(int)col) = saturate_cast(value); + break; + case 2: + this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + break; + case 3: + this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + break; + case 4: + this_object->mat->at((int)row,(int)col)[channel]=saturate_cast(value); + break; + default: + opencv_throw_exception("Get Mat px only channel in 1,2,3,4."); + break; + } break; } + } RETURN_NULL(); } diff --git a/source/opencv2/core/opencv_type.cc b/source/opencv2/core/opencv_type.cc index c50901b..e6b576a 100644 --- a/source/opencv2/core/opencv_type.cc +++ b/source/opencv2/core/opencv_type.cc @@ -14,9 +14,6 @@ +----------------------------------------------------------------------+ */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "../../../php_opencv.h" #include "opencv_type.h" diff --git a/source/opencv2/core/opencv_utility.cc b/source/opencv2/core/opencv_utility.cc index 444e095..d183f30 100644 --- a/source/opencv2/core/opencv_utility.cc +++ b/source/opencv2/core/opencv_utility.cc @@ -15,9 +15,6 @@ */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "../../../php_opencv.h" #include "opencv_utility.h" diff --git a/source/opencv2/face/opencv_facerec.cc b/source/opencv2/face/opencv_facerec.cc index 758845e..bbda764 100644 --- a/source/opencv2/face/opencv_facerec.cc +++ b/source/opencv2/face/opencv_facerec.cc @@ -15,6 +15,7 @@ */ + #include "opencv_facerec.h" #include "../opencv_face.h" #include "../core/opencv_mat.h" diff --git a/source/opencv2/imgcodecs/opencv_imgcodecs_c.cc b/source/opencv2/imgcodecs/opencv_imgcodecs_c.cc index 2c612b3..10cb800 100644 --- a/source/opencv2/imgcodecs/opencv_imgcodecs_c.cc +++ b/source/opencv2/imgcodecs/opencv_imgcodecs_c.cc @@ -16,7 +16,4 @@ #include "../../../php_opencv.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif diff --git a/source/opencv2/opencv_core.cc b/source/opencv2/opencv_core.cc index 6e109dd..c4d7921 100644 --- a/source/opencv2/opencv_core.cc +++ b/source/opencv2/opencv_core.cc @@ -21,9 +21,6 @@ #include "../../opencv_exception.h" #include "core/opencv_type.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif zend_class_entry *opencv_formatter_ce; diff --git a/source/opencv2/opencv_face.cc b/source/opencv2/opencv_face.cc index b31e5ef..1bc7cd5 100644 --- a/source/opencv2/opencv_face.cc +++ b/source/opencv2/opencv_face.cc @@ -15,10 +15,14 @@ */ #include "opencv_face.h" -#include "face/opencv_facerec.h" zend_class_entry *opencv_face_recognizer_ce; +#ifdef HAVE_OPENCV_FACE + +#include "face/opencv_facerec.h" + + /** * opencv_face_recognizer_methods[] */ @@ -38,4 +42,13 @@ void opencv_face_init(int module_number){ opencv_face_recognizer_init(module_number); opencv_lbph_face_recognizer_init(module_number); opencv_base_face_recognizer_init(module_number); -} \ No newline at end of file +} + +#else + +void opencv_face_init(int module_number){ + +} + +#endif + diff --git a/source/opencv2/opencv_highgui.cc b/source/opencv2/opencv_highgui.cc index b0b789b..929d3d2 100644 --- a/source/opencv2/opencv_highgui.cc +++ b/source/opencv2/opencv_highgui.cc @@ -21,9 +21,6 @@ #include "../../opencv_exception.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif /** * //todo only cli can call this function @@ -134,7 +131,7 @@ opencv_fcall_info_cb * opencv_fcall_info_cb_create(zend_fcall_info *fci_ptr, zen memcpy(cb->fci, fci_ptr, sizeof(zend_fcall_info)); memcpy(cb->fci_cache, fci_cache_ptr, sizeof(zend_fcall_info_cache)); - Z_TRY_ADDREF(cb->fci->function_name); + Z_TRY_ADDREF(cb->fci->function_name);//todo 滑动调或窗口销毁是释放内存 cb->fci->param_count = 0; cb->fci->no_separation = 1; cb->fci->retval = NULL; @@ -178,9 +175,7 @@ PHP_FUNCTION(opencv_create_trackbar){ &fci, &fci_cache) == FAILURE) { return; } - int *trackbar_value_ptr = new int(value); - opencv_fcall_info_cb *cb = opencv_fcall_info_cb_create(&fci, &fci_cache); createTrackbar(trackbarname, winname, trackbar_value_ptr, (int)count,opencv_create_trackbar_callback,cb); RETURN_NULL(); @@ -207,7 +202,7 @@ PHP_FUNCTION(opencv_get_track_bar_pos){ char *trackbarname, *winname; long trackbarname_len, winname_len; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &trackbarname, &trackbarname_len, &winname, &winname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss", &trackbarname, &trackbarname_len, &winname, &winname_len) == FAILURE) { return; } RETURN_LONG(getTrackbarPos(trackbarname, winname)) diff --git a/source/opencv2/opencv_highgui.h b/source/opencv2/opencv_highgui.h index 1ced77c..921a7b6 100644 --- a/source/opencv2/opencv_highgui.h +++ b/source/opencv2/opencv_highgui.h @@ -24,6 +24,13 @@ PHP_FUNCTION(opencv_imshow); PHP_FUNCTION(opencv_wait_key); PHP_FUNCTION(opencv_move_window); PHP_FUNCTION(opencv_named_window); +ZEND_BEGIN_ARG_INFO_EX(opencv_create_trackbar_arginfo, 0, 0, 5) + ZEND_ARG_INFO(0, trackbarname) + ZEND_ARG_INFO(0, winname) + ZEND_ARG_INFO(1, value) + ZEND_ARG_INFO(0, count) + ZEND_ARG_INFO(0, onChange) +ZEND_END_ARG_INFO() PHP_FUNCTION(opencv_create_trackbar); PHP_FUNCTION(opencv_destroy_window); PHP_FUNCTION(opencv_get_track_bar_pos); diff --git a/source/opencv2/opencv_imgproc.cc b/source/opencv2/opencv_imgproc.cc index 0ab5d02..3f6d912 100644 --- a/source/opencv2/opencv_imgproc.cc +++ b/source/opencv2/opencv_imgproc.cc @@ -26,6 +26,7 @@ void opencv_imgproc_init(int module_number) { opencv_color_conversion_code_init(module_number); opencv_line_type_init(module_number); + opencv_morph_shapes(module_number); } /** @@ -1247,3 +1248,9 @@ void opencv_line_type_init(int module_number){ REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "LINE_8", LINE_8, CONST_CS | CONST_PERSISTENT); REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "LINE_AA", LINE_AA, CONST_CS | CONST_PERSISTENT); } + +void opencv_morph_shapes(int module_number){ + REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "MORPH_RECT", MORPH_RECT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "MORPH_CROSS", MORPH_CROSS, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "MORPH_ELLIPSE", MORPH_ELLIPSE, CONST_CS | CONST_PERSISTENT); +} \ No newline at end of file diff --git a/source/opencv2/opencv_imgproc.h b/source/opencv2/opencv_imgproc.h index 5db3920..0b9ac3b 100644 --- a/source/opencv2/opencv_imgproc.h +++ b/source/opencv2/opencv_imgproc.h @@ -20,6 +20,7 @@ void opencv_imgproc_init(int module_number); void opencv_color_conversion_code_init(int module_number); void opencv_line_type_init(int module_number); +void opencv_morph_shapes(int module_number); PHP_FUNCTION(opencv_cv_t_color); PHP_FUNCTION(opencv_ellipse); PHP_FUNCTION(opencv_circle);