From eeb786fcfd47c5a8dd9f6c1132ff652905731e34 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 12:46:28 +0400 Subject: [PATCH] fixed compile warnings from MSVC; fixed warnings in Python bindings; added some debugging code --- modules/ml/include/opencv2/ml.hpp | 12 ++++++------ modules/ml/src/ann_mlp.cpp | 9 ++++----- modules/ml/src/boost.cpp | 6 ++++-- modules/ml/src/data.cpp | 8 ++++---- modules/ml/src/inner_functions.cpp | 2 +- modules/ml/src/knearest.cpp | 2 +- modules/ml/src/precomp.hpp | 8 ++++---- modules/ml/src/rtrees.cpp | 3 +-- modules/ml/src/svm.cpp | 2 +- modules/ml/src/tree.cpp | 8 ++++---- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index 3338dd3..f642f1f 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -205,7 +205,7 @@ public: class CV_EXPORTS_W NormalBayesClassifier : public StatModel { public: - class CV_EXPORTS_W_MAP Params + class CV_EXPORTS_W Params { public: Params(); @@ -231,8 +231,8 @@ public: public: Params(int defaultK=10, bool isclassifier=true); - int defaultK; - bool isclassifier; + CV_PROP_RW int defaultK; + CV_PROP_RW bool isclassifier; }; virtual void setParams(const Params& p) = 0; virtual Params getParams() const = 0; @@ -328,9 +328,9 @@ public: explicit Params(int nclusters=DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, EM::DEFAULT_MAX_ITERS, 1e-6)); - int nclusters; - int covMatType; - TermCriteria termCrit; + CV_PROP_RW int nclusters; + CV_PROP_RW int covMatType; + CV_PROP_RW TermCriteria termCrit; }; virtual void setParams(const Params& p) = 0; diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 878ab4e..73af1ae 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -123,7 +123,7 @@ public: void clear() { min_val = max_val = min_val1 = max_val1 = 0.; - rng = RNG(-1); + rng = RNG((uint64)-1); weights.clear(); trained = false; } @@ -300,7 +300,7 @@ public: { int maxIdx[] = {0, 0}; minMaxIdx(outputs, 0, 0, 0, maxIdx); - return maxIdx[0] + maxIdx[1]; + return (float)(maxIdx[0] + maxIdx[1]); } return 0.f; @@ -702,9 +702,8 @@ public: train_backprop( inputs, outputs, sw, termcrit ) : train_rprop( inputs, outputs, sw, termcrit ); - trained = true; - - return iter; + trained = iter > 0; + return trained; } int train_backprop( const Mat& inputs, const Mat& outputs, const Mat& _sw, TermCriteria termCrit ) diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 9af9018..4804543 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -220,12 +220,13 @@ public: void updateWeightsAndTrim( int treeidx, vector& sidx ) { + putchar('<'); int i, n = (int)w->sidx.size(); int nvars = (int)varIdx.size(); double sumw = 0., C = 1.; - cv::AutoBuffer buf(n*3 + nvars); + cv::AutoBuffer buf(n + nvars); double* result = buf; - float* sbuf = (float*)(result + n*3); + float* sbuf = (float*)(result + n); Mat sample(1, nvars, CV_32F, sbuf); int predictFlags = bparams.boostType == Boost::DISCRETE ? (PREDICT_MAX_VOTE | RAW_OUTPUT) : PREDICT_SUM; predictFlags |= COMPRESSED_INPUT; @@ -373,6 +374,7 @@ public: if( w->sample_weights[si] >= threshold ) sidx.push_back(si); } + putchar('>'); fflush(stdout); } float predictTrees( const Range& range, const Mat& sample, int flags0 ) const diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index 33ad79c..b5d0527 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -310,7 +310,7 @@ public: varType.create(1, nvars, CV_8U); varType = Scalar::all(VAR_ORDERED); if( noutputvars == 1 ) - varType.at(ninputvars) = responses.type() < CV_32F ? VAR_CATEGORICAL : VAR_ORDERED; + varType.at(ninputvars) = (uchar)(responses.type() < CV_32F ? VAR_CATEGORICAL : VAR_ORDERED); } if( noutputvars > 1 ) @@ -558,7 +558,7 @@ public: if( tp == VAR_MISSED ) haveMissed = true; rowvals.push_back(val); - rowtypes.push_back(tp); + rowtypes.push_back((uchar)tp); token = strtok(NULL, delimiters); if (!token) break; @@ -880,7 +880,7 @@ public: if( s ) { j = s[i]; - CV_DbgAssert( 0 <= j && j < nsamples ); + CV_Assert( 0 <= j && j < nsamples ); } values[i] = src[j*sstep]; if( values[i] == MISSED_VAL ) @@ -955,7 +955,7 @@ public: if( vptr ) { j = vptr[i]; - CV_DbgAssert( 0 <= j && j < nvars ); + CV_Assert( 0 <= j && j < nvars ); } buf[i] = src[j*vstep]; } diff --git a/modules/ml/src/inner_functions.cpp b/modules/ml/src/inner_functions.cpp index a5fd59d..3d5f335 100644 --- a/modules/ml/src/inner_functions.cpp +++ b/modules/ml/src/inner_functions.cpp @@ -108,7 +108,7 @@ float StatModel::calcError( const Ptr& data, bool testerr, OutputArra if( _resp.needed() ) resp.copyTo(_resp); - return err / n * (isclassifier ? 100 : 1); + return (float)(err / n * (isclassifier ? 100 : 1)); } void StatModel::save(const String& filename) const diff --git a/modules/ml/src/knearest.cpp b/modules/ml/src/knearest.cpp index 6c40545..3ead322 100644 --- a/modules/ml/src/knearest.cpp +++ b/modules/ml/src/knearest.cpp @@ -173,7 +173,7 @@ public: } float result = 0.f; - float inv_scale = 1./k; + float inv_scale = 1.f/k; for( testidx = 0; testidx < testcount; testidx++ ) { diff --git a/modules/ml/src/precomp.hpp b/modules/ml/src/precomp.hpp index dde1ba1..ca47395 100644 --- a/modules/ml/src/precomp.hpp +++ b/modules/ml/src/precomp.hpp @@ -111,7 +111,7 @@ namespace ml termCrit.type |= TermCriteria::EPS; termCrit.epsilon = epsilon; } - int iters = (double)fn["iterations"]; + int iters = (int)fn["iterations"]; if( iters > 0 ) { termCrit.type |= TermCriteria::COUNT; @@ -134,7 +134,7 @@ namespace ml } int class_idx; - int Tn; + double Tn; double value; int parent; @@ -164,7 +164,7 @@ namespace ml } int varIdx; - int inversed; + bool inversed; float quality; int next; float c; @@ -179,7 +179,7 @@ namespace ml vector wnodes; vector wsplits; vector wsubsets; - vector cv_Tn; + vector cv_Tn; vector cv_node_risk; vector cv_node_error; vector cv_labels; diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index bdd7df7..abae817 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -90,7 +90,7 @@ public: { DTreesImpl::clear(); oobError = 0.; - rng = RNG(-1); + rng = RNG((uint64)-1); } const vector& getActiveVars() @@ -177,7 +177,6 @@ public: for( treeidx = 0; treeidx < ntrees; treeidx++ ) { - putchar('.'); fflush(stdout); for( i = 0; i < n; i++ ) oobmask[i] = (uchar)1; diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index ea8123a..985cc62 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -1587,7 +1587,7 @@ public: bool balanced ) { int svmType = params.svmType; - RNG rng(-1); + RNG rng((uint64)-1); if( svmType == ONE_CLASS ) // current implementation of "auto" svm does not support the 1-class case. diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 3eac0b8..49013e2 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -730,7 +730,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitOrdClass( int vi, const vector& _si { split.varIdx = vi; split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; - split.inversed = 0; + split.inversed = false; split.quality = (float)best_val; } return split; @@ -744,12 +744,12 @@ void DTreesImpl::clusterCategories( const double* vectors, int n, int m, double* cv::AutoBuffer buf(n + k); double *v_weights = buf, *c_weights = buf + n; bool modified = true; - RNG r(-1); + RNG r((uint64)-1); // assign labels randomly for( i = 0; i < n; i++ ) { - int sum = 0; + double sum = 0; const double* v = vectors + i*m; labels[i] = i < k ? i : r.uniform(0, k); @@ -1063,7 +1063,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitOrdReg( int vi, const vector& _sidx { split.varIdx = vi; split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; - split.inversed = 0; + split.inversed = false; split.quality = (float)best_val; } return split; -- 2.7.4