Adding support for pointer generation. Fixes #6605

pull/6608/head
Marek Smigielski 9 years ago
parent eca752368b
commit ef45005056
  1. 14
      modules/java/generator/gen_java.py
  2. 10
      modules/ml/include/opencv2/ml.hpp

@ -991,12 +991,12 @@ class JavaWrapperGenerator(object):
if classinfo.base: if classinfo.base:
classinfo.addImports(classinfo.base) classinfo.addImports(classinfo.base)
type_dict["Ptr_"+name] = \ type_dict["Ptr_"+name] = \
{ "j_type" : name, { "j_type" : name,
"jn_type" : "long", "jn_args" : (("__int64", ".nativeObj"),), "jn_type" : "long", "jn_args" : (("__int64", ".nativeObj"),),
"jni_name" : "Ptr<"+name+">(("+name+"*)%(n)s_nativeObj)", "jni_type" : "jlong", "jni_name" : "Ptr<"+name+">(("+classinfo.fullName(isCPP=True)+"*)%(n)s_nativeObj)", "jni_type" : "jlong",
"suffix" : "J" } "suffix" : "J" }
logging.info('ok: %s', classinfo) logging.info('ok: class %s, name: %s, base: %s', classinfo, name, classinfo.base)
def add_const(self, decl): # [ "const cname", val, [], [] ] def add_const(self, decl): # [ "const cname", val, [], [] ]
constinfo = ConstInfo(decl, namespaces=self.namespaces) constinfo = ConstInfo(decl, namespaces=self.namespaces)
@ -1347,7 +1347,7 @@ class JavaWrapperGenerator(object):
ret = "return (jlong) new %s(_retval_);" % self.fullTypeName(fi.ctype) ret = "return (jlong) new %s(_retval_);" % self.fullTypeName(fi.ctype)
elif fi.ctype.startswith('Ptr_'): elif fi.ctype.startswith('Ptr_'):
c_prologue.append("typedef Ptr<%s> %s;" % (self.fullTypeName(fi.ctype[4:]), fi.ctype)) c_prologue.append("typedef Ptr<%s> %s;" % (self.fullTypeName(fi.ctype[4:]), fi.ctype))
ret = "return (jlong)(new %(ctype)s(_retval_));" % { 'ctype':fi.ctype } ret = "%(ctype)s* curval = new %(ctype)s(_retval_);return (jlong)curval->get();" % { 'ctype':fi.ctype }
elif self.isWrapped(ret_type): # pointer to wrapped class: elif self.isWrapped(ret_type): # pointer to wrapped class:
ret = "return (jlong) _retval_;" ret = "return (jlong) _retval_;"
elif type_dict[fi.ctype]["jni_type"] == "jdoubleArray": elif type_dict[fi.ctype]["jni_type"] == "jdoubleArray":

@ -285,7 +285,7 @@ public:
<number_of_variables_in_responses>`, containing types of each input and output variable. See <number_of_variables_in_responses>`, containing types of each input and output variable. See
ml::VariableTypes. ml::VariableTypes.
*/ */
CV_WRAP static Ptr<TrainData> create(InputArray samples, int layout, InputArray responses, CV_WRAP static Ptr<cv::ml::TrainData> create(InputArray samples, int layout, InputArray responses,
InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), InputArray varIdx=noArray(), InputArray sampleIdx=noArray(),
InputArray sampleWeights=noArray(), InputArray varType=noArray()); InputArray sampleWeights=noArray(), InputArray varType=noArray());
}; };
@ -320,7 +320,7 @@ public:
@param flags optional flags, depending on the model. Some of the models can be updated with the @param flags optional flags, depending on the model. Some of the models can be updated with the
new training samples, not completely overwritten (such as NormalBayesClassifier or ANN_MLP). new training samples, not completely overwritten (such as NormalBayesClassifier or ANN_MLP).
*/ */
CV_WRAP virtual bool train( const Ptr<TrainData>& trainData, int flags=0 ); CV_WRAP virtual bool train( const Ptr<cv::ml::TrainData>& trainData, int flags=0 );
/** @brief Trains the statistical model /** @brief Trains the statistical model
@ -343,7 +343,7 @@ public:
The method uses StatModel::predict to compute the error. For regression models the error is The method uses StatModel::predict to compute the error. For regression models the error is
computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%). computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%).
*/ */
CV_WRAP virtual float calcError( const Ptr<TrainData>& data, bool test, OutputArray resp ) const; CV_WRAP virtual float calcError( const Ptr<cv::ml::TrainData>& data, bool test, OutputArray resp ) const;
/** @brief Predicts response(s) for the provided sample(s) /** @brief Predicts response(s) for the provided sample(s)
@ -357,7 +357,7 @@ public:
The class must implement static `create()` method with no parameters or with all default parameter values The class must implement static `create()` method with no parameters or with all default parameter values
*/ */
template<typename _Tp> static Ptr<_Tp> train(const Ptr<TrainData>& data, int flags=0) template<typename _Tp> static Ptr<_Tp> train(const Ptr<cv::ml::TrainData>& data, int flags=0)
{ {
Ptr<_Tp> model = _Tp::create(); Ptr<_Tp> model = _Tp::create();
return !model.empty() && model->train(data, flags) ? model : Ptr<_Tp>(); return !model.empty() && model->train(data, flags) ? model : Ptr<_Tp>();
@ -667,7 +667,7 @@ public:
regression (SVM::EPS_SVR or SVM::NU_SVR). If it is SVM::ONE_CLASS, no optimization is made and regression (SVM::EPS_SVR or SVM::NU_SVR). If it is SVM::ONE_CLASS, no optimization is made and
the usual %SVM with parameters specified in params is executed. the usual %SVM with parameters specified in params is executed.
*/ */
virtual bool trainAuto( const Ptr<TrainData>& data, int kFold = 10, virtual bool trainAuto( const Ptr<cv::ml::TrainData>& data, int kFold = 10,
ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C), ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C),
ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA), ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA),
ParamGrid pGrid = SVM::getDefaultGrid(SVM::P), ParamGrid pGrid = SVM::getDefaultGrid(SVM::P),

Loading…
Cancel
Save