|
16 | 16 |
|
17 | 17 | #include "../../php_opencv.h" |
18 | 18 | #include "opencv_ml.h" |
19 | | -#include <opencv2/ml.hpp> |
| 19 | +#include "core/opencv_mat.h" |
20 | 20 |
|
21 | 21 | using namespace cv::ml; |
22 | 22 |
|
23 | 23 | void opencv_ml_init(int module_number){ |
| 24 | + opencv_ml_constants_init(module_number); |
24 | 25 | opencv_k_nearest_init(module_number); |
25 | 26 | } |
26 | 27 |
|
| 28 | +void opencv_ml_constants_init(int module_number){ |
| 29 | + opencv_ml_sample_types_init(module_number); |
| 30 | +} |
| 31 | + |
| 32 | +void opencv_ml_sample_types_init(int module_number){ |
| 33 | + REGISTER_NS_LONG_CONSTANT(OPENCV_ML_NS, "ROW_SAMPLE", ROW_SAMPLE, CONST_CS | CONST_PERSISTENT); |
| 34 | + REGISTER_NS_LONG_CONSTANT(OPENCV_ML_NS, "COL_SAMPLE", COL_SAMPLE, CONST_CS | CONST_PERSISTENT); |
| 35 | +} |
| 36 | + |
27 | 37 | /****************************************************************************************\ |
28 | 38 | * K-Nearest Neighbour Classifier * |
29 | 39 | \****************************************************************************************/ |
@@ -75,13 +85,34 @@ PHP_METHOD(opencv_k_nearest, set_default_k) |
75 | 85 | RETURN_NULL(); |
76 | 86 | } |
77 | 87 |
|
| 88 | +PHP_METHOD(opencv_k_nearest, train) |
| 89 | +{ |
| 90 | + zval *samples_zval, *responses_zval; |
| 91 | + long layout; |
| 92 | + if (zend_parse_parameters(ZEND_NUM_ARGS(), "OlO", |
| 93 | + &samples_zval, opencv_mat_ce, |
| 94 | + &layout, |
| 95 | + &responses_zval, opencv_mat_ce |
| 96 | + ) == FAILURE) { |
| 97 | + RETURN_NULL(); |
| 98 | + } |
| 99 | + opencv_k_nearest_object *obj = Z_PHP_K_NEAREST_OBJ_P(getThis()); |
| 100 | + opencv_mat_object *samples_obj = Z_PHP_MAT_OBJ_P(samples_zval); |
| 101 | + opencv_mat_object *responses_obj = Z_PHP_MAT_OBJ_P(responses_zval); |
| 102 | + |
| 103 | + RETURN_BOOL(obj->KNearest->train(*samples_obj->mat, (int)layout, *responses_obj->mat)); |
| 104 | +} |
| 105 | + |
| 106 | + |
78 | 107 |
|
79 | 108 | /** |
80 | 109 | * opencv_k_nearest_methods[] |
81 | 110 | */ |
82 | 111 | const zend_function_entry opencv_k_nearest_methods[] = { |
83 | 112 | PHP_ME(opencv_k_nearest, create, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) |
84 | 113 | PHP_MALIAS(opencv_k_nearest, getDefaultK ,get_default_k, NULL, ZEND_ACC_PUBLIC) |
| 114 | + PHP_MALIAS(opencv_k_nearest, setDefaultK ,set_default_k, NULL, ZEND_ACC_PUBLIC) |
| 115 | + PHP_ME(opencv_k_nearest, train, NULL, ZEND_ACC_PUBLIC) |
85 | 116 | PHP_FE_END |
86 | 117 | }; |
87 | 118 | /* }}} */ |
|
0 commit comments