|
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