From 56fcc41d7042297fed2184e64116ff14df2e4140 Mon Sep 17 00:00:00 2001 From: berak Date: Tue, 7 Oct 2014 12:19:54 +0200 Subject: [PATCH] bugfix #3945 pass idx,idx1 by reference instead of static vars --- modules/photo/src/contrast_preserve.hpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/photo/src/contrast_preserve.hpp b/modules/photo/src/contrast_preserve.hpp index 0cc6bce85..057c359ea 100644 --- a/modules/photo/src/contrast_preserve.hpp +++ b/modules/photo/src/contrast_preserve.hpp @@ -64,8 +64,8 @@ class Decolor void singleChannelGrady(const Mat &img, Mat& dest); void gradvector(const Mat &img, vector &grad); void colorGrad(Mat img, vector &Cg); - void add_vector(vector < vector > &comb, int r,int g,int b); - void add_to_vector_poly(vector < vector > &polyGrad, vector &curGrad); + void add_vector(vector < vector > &comb, int &idx, int r,int g,int b); + void add_to_vector_poly(vector < vector > &polyGrad, vector &curGrad, int &idx1); void weak_order(Mat img, vector &alf); void grad_system(Mat img, vector < vector < double > > &polyGrad, vector < double > &Cg, vector < vector >& comb); @@ -208,9 +208,8 @@ void Decolor::colorGrad(Mat img, vector &Cg) Imb.clear(); } -void Decolor::add_vector(vector < vector > &comb, int r,int g,int b) +void Decolor::add_vector(vector < vector > &comb, int &idx, int r,int g,int b) { - static int idx =0; comb.push_back( vector () ); comb.at(idx).push_back( r ); comb.at(idx).push_back( g ); @@ -218,9 +217,8 @@ void Decolor::add_vector(vector < vector > &comb, int r,int g,int b) idx++; } -void Decolor::add_to_vector_poly(vector < vector > &polyGrad, vector &curGrad) +void Decolor::add_to_vector_poly(vector < vector > &polyGrad, vector &curGrad, int &idx1) { - static int idx1 =0; polyGrad.push_back( vector () ); for(unsigned int i=0;i > &polyGrad, vector rgb_channel; split(img,rgb_channel); + int idx = 0, idx1 = 0; for(int r=0 ;r <=order; r++) for(int g=0; g<=order;g++) for(int b =0; b <=order;b++) { if((r+g+b)<=order && (r+g+b) > 0) { - add_vector(comb,r,g,b); + add_vector(comb,idx,r,g,b); for(int i = 0;i(i,j)= @@ -336,7 +335,7 @@ void Decolor::grad_system(Mat img, vector < vector < double > > &polyGrad, pow(rgb_channel[0].at(i,j),b); vector curGrad; gradvector(curIm,curGrad); - add_to_vector_poly(polyGrad,curGrad); + add_to_vector_poly(polyGrad,curGrad,idx1); } } }