@@ -56,6 +56,7 @@ PHP_FUNCTION(opencv_cv_t_color){
5656 RETURN_ZVAL (&instance,0 ,0 ); // return php Mat object
5757}
5858
59+
5960/* *
6061 * CV\ellipse
6162 * @param CV\Mat $img, Mat of original picture
@@ -462,7 +463,7 @@ PHP_FUNCTION(opencv_gaussian_blur){
462463 &src_zval, opencv_mat_ce,
463464 &dst_zval,
464465 &ksize_zval, opencv_size_ce,
465- &sigma_x, sigma_y,
466+ &sigma_x, & sigma_y,
466467 &border_type) == FAILURE) {
467468 RETURN_NULL ();
468469 }
@@ -676,6 +677,263 @@ PHP_FUNCTION(opencv_threshold){
676677 RETURN_DOUBLE (threshold (*src_object->mat , *dst_object->mat , thresh, maxval, (int )type));
677678}
678679
680+ /* *
681+ * CV\sobel
682+ * @param execute_data
683+ * @param return_value
684+ */
685+ PHP_FUNCTION (opencv_sobel){
686+
687+ zval *src_zval, *dst_zval;
688+ long ddepth,dx,dy;
689+ long ksize=3 ;
690+
691+ double delta = 0.0 ,scale=1.0 ;
692+ long border_type = BORDER_DEFAULT;
693+ opencv_mat_object *dst_object;
694+
695+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Ozlll|lddl" ,
696+ &src_zval, opencv_mat_ce,
697+ &dst_zval,
698+ &ddepth,
699+ &dx,
700+ &dy,
701+ &ksize,
702+ &scale,
703+ &delta,
704+ &border_type) == FAILURE) {
705+ RETURN_NULL ();
706+ }
707+
708+ opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P (src_zval);
709+
710+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
711+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
712+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
713+ } else {
714+ zval_ptr_dtor (dst_real_zval);
715+ zval instance;
716+ Mat dst;
717+ object_init_ex (&instance,opencv_mat_ce);
718+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
719+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
720+ dst_object->mat = new Mat (dst);
721+ }
722+ Sobel (*src_object->mat , *dst_object->mat , (int )ddepth, (int )dx, (int )dy, (int )ksize, (double )scale, (double )delta, (int )border_type);
723+ RETURN_NULL ();
724+ }
725+
726+ /* *
727+ * CV\Scharr
728+ * @param execute_data
729+ * @param return_value
730+ */
731+ PHP_FUNCTION (opencv_scharr){
732+
733+ zval *src_zval, *dst_zval;
734+ long ddepth,dx,dy;
735+
736+ double delta = 0.0 ,scale=1.0 ;
737+ long border_type = BORDER_DEFAULT;
738+ opencv_mat_object *dst_object;
739+
740+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Ozlll|ddl" ,
741+ &src_zval, opencv_mat_ce,
742+ &dst_zval,
743+ &ddepth,
744+ &dx,
745+ &dy,
746+ &scale,
747+ &delta,
748+ &border_type) == FAILURE) {
749+ RETURN_NULL ();
750+ }
751+
752+ opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P (src_zval);
753+
754+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
755+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
756+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
757+ } else {
758+ zval_ptr_dtor (dst_real_zval);
759+ zval instance;
760+ Mat dst;
761+ object_init_ex (&instance,opencv_mat_ce);
762+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
763+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
764+ dst_object->mat = new Mat (dst);
765+ }
766+ Scharr (*src_object->mat , *dst_object->mat , (int )ddepth, (int )dx, (int )dy, (double )scale, (double )delta, (int )border_type);
767+ RETURN_NULL ();
768+ }
769+
770+ /* *
771+ * CV\laplacian
772+ * @param execute_data
773+ * @param return_value
774+ */
775+ PHP_FUNCTION (opencv_laplacian){
776+
777+ zval *src_zval, *dst_zval;
778+ long ddepth;
779+ long ksize=3 ;
780+
781+ double delta = 0.0 ,scale=1.0 ;
782+ long border_type = BORDER_DEFAULT;
783+ opencv_mat_object *dst_object;
784+
785+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Ozl|lddl" ,
786+ &src_zval, opencv_mat_ce,
787+ &dst_zval,
788+ &ddepth,
789+ &ksize,
790+ &scale,
791+ &delta,
792+ &border_type) == FAILURE) {
793+ RETURN_NULL ();
794+ }
795+
796+ opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P (src_zval);
797+
798+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
799+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
800+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
801+ } else {
802+ zval_ptr_dtor (dst_real_zval);
803+ zval instance;
804+ Mat dst;
805+ object_init_ex (&instance,opencv_mat_ce);
806+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
807+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
808+ dst_object->mat = new Mat (dst);
809+ }
810+ Laplacian (*src_object->mat , *dst_object->mat , (int )ddepth, (int )ksize, (double )scale, (double )delta, (int )border_type);
811+ RETURN_NULL ();
812+ }
813+
814+ /* *
815+ * CV\filter2D
816+ * @param execute_data
817+ * @param return_value
818+ */
819+ PHP_FUNCTION (opencv_filter2D){
820+
821+ zval *src_zval, *dst_zval, *kernel_zval, *anchor_zval = NULL ;
822+ long ddepth;
823+ Point anchor = Point (-1 ,-1 );
824+ double delta = 0.0 ;
825+ long border_type = BORDER_DEFAULT;
826+ opencv_mat_object *dst_object;
827+
828+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " OzlO|Odl" ,
829+ &src_zval, opencv_mat_ce,
830+ &dst_zval,
831+ &ddepth,
832+ &kernel_zval, opencv_mat_ce,
833+ &anchor_zval, opencv_point_ce,
834+ &delta,
835+ &border_type) == FAILURE) {
836+ RETURN_NULL ();
837+ }
838+
839+ opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P (src_zval);
840+ opencv_mat_object *kernel_object = Z_PHP_MAT_OBJ_P (kernel_zval);
841+ if (anchor_zval != NULL ){
842+ opencv_point_object *anchor_object = Z_PHP_POINT_OBJ_P (anchor_zval);
843+ anchor = *anchor_object->point ;
844+ }
845+
846+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
847+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
848+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
849+ } else {
850+ zval_ptr_dtor (dst_real_zval);
851+ zval instance;
852+ Mat dst;
853+ object_init_ex (&instance,opencv_mat_ce);
854+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
855+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
856+ dst_object->mat = new Mat (dst);
857+ }
858+ filter2D (*src_object->mat , *dst_object->mat , (int )ddepth, *kernel_object->mat , anchor, delta, (int )border_type);
859+ RETURN_NULL ();
860+ }
861+
862+ /* *
863+ * CV\convertScaleAbs
864+ * @param execute_data
865+ * @param return_value
866+ */
867+ PHP_FUNCTION (opencv_convert_scale_abs){
868+
869+ zval *src_zval, *dst_zval;
870+ double alpha = 1.0 ;
871+ double beta = 0.0 ;
872+
873+ opencv_mat_object *dst_object;
874+
875+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " Oz|dd" ,
876+ &src_zval, opencv_mat_ce,
877+ &dst_zval,
878+ &alpha,
879+ &beta) == FAILURE) {
880+ RETURN_NULL ();
881+ }
882+
883+ opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P (src_zval);
884+
885+ zval *dst_real_zval = Z_REFVAL_P (dst_zval);
886+ if (Z_TYPE_P (dst_real_zval) == IS_OBJECT && Z_OBJCE_P (dst_real_zval) == opencv_mat_ce){
887+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
888+ } else {
889+ zval_ptr_dtor (dst_real_zval);
890+ zval instance;
891+ Mat dst;
892+ object_init_ex (&instance,opencv_mat_ce);
893+ ZVAL_COPY_VALUE (dst_real_zval, &instance);
894+ dst_object = Z_PHP_MAT_OBJ_P (dst_real_zval);
895+ dst_object->mat = new Mat (dst);
896+ }
897+ convertScaleAbs (*src_object->mat , *dst_object->mat , (double )alpha, (double )beta);
898+ RETURN_NULL ();
899+ }
900+
901+ /* *
902+ * CV\getStructuringElement
903+ * @param execute_data
904+ * @param return_value
905+ */
906+ PHP_FUNCTION (opencv_get_structuring_element){
907+ long shape;
908+ zval *ksize_zval, *anchor_zval = NULL ;
909+ Point anchor = Point (-1 ,-1 );
910+ opencv_mat_object *dst_object;
911+ Mat dst;
912+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " lO|O" ,
913+ &shape,
914+ &ksize_zval, opencv_size_ce,
915+ &anchor_zval, opencv_point_ce) == FAILURE) {
916+ RETURN_NULL ();
917+ }
918+
919+ opencv_size_object *ksize_object = Z_PHP_SIZE_OBJ_P (ksize_zval);
920+ if (anchor_zval != NULL ){
921+ opencv_point_object *anchor_object = Z_PHP_POINT_OBJ_P (anchor_zval);
922+ anchor = *anchor_object->point ;
923+ }
924+
925+ dst = getStructuringElement ((int )shape, *ksize_object->size , anchor);
926+
927+ zval instance;
928+ object_init_ex (&instance,opencv_mat_ce);
929+ opencv_mat_object *dst_obj = Z_PHP_MAT_OBJ_P (&instance);
930+
931+ dst_obj->mat =new Mat (dst);
932+ opencv_mat_update_property_by_c_mat (&instance,dst_obj->mat );
933+
934+ RETURN_ZVAL (&instance,0 ,0 ); // return php Mat object
935+ }
936+
679937/* *
680938 * color conversion code in CV\cvtColor,opencv enum ColorConversionCodes
681939 * @param module_number
@@ -940,4 +1198,4 @@ void opencv_line_type_init(int module_number){
9401198 REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " LINE_4" , LINE_4, CONST_CS | CONST_PERSISTENT);
9411199 REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " LINE_8" , LINE_8, CONST_CS | CONST_PERSISTENT);
9421200 REGISTER_NS_LONG_CONSTANT (OPENCV_NS, " LINE_AA" , LINE_AA, CONST_CS | CONST_PERSISTENT);
943- }
1201+ }
0 commit comments