diff --git a/src/openalpr/binarize_wolf.cpp b/src/openalpr/binarize_wolf.cpp index c5f1fff..c5ecb84 100644 --- a/src/openalpr/binarize_wolf.cpp +++ b/src/openalpr/binarize_wolf.cpp @@ -42,7 +42,9 @@ float calcLocalStats (Mat &im, Mat &map_m, Mat &map_s, int winx, int winy) { - float m,s,max_s, sum, sum_sq, foo; + float m,s,max_s; + long sum, sum_sq; + uchar foo; int wxh = winx/2; int wyh = winy/2; int x_firstth= wxh; @@ -50,6 +52,7 @@ float calcLocalStats (Mat &im, Mat &map_m, Mat &map_s, int winx, int winy) { int y_firstth= wyh; float winarea = winx*winy; + max_s = 0; for (int j = y_firstth ; j<=y_lastth; j++) { @@ -61,8 +64,8 @@ float calcLocalStats (Mat &im, Mat &map_m, Mat &map_s, int winx, int winy) { sum += foo; sum_sq += foo*foo; } - m = sum / winarea; - s = sqrt ((sum_sq - (sum*sum)/winarea)/winarea); + m = ((float)sum) / winarea; + s = sqrt ((((float)sum_sq) - ((float)(sum*sum))/winarea)/winarea); if (s > max_s) max_s = s; map_m.fset(x_firstth, j, m); @@ -80,8 +83,8 @@ float calcLocalStats (Mat &im, Mat &map_m, Mat &map_s, int winx, int winy) { sum += foo; sum_sq += foo*foo; } - m = sum / winarea; - s = sqrt ((sum_sq - (sum*sum)/winarea)/winarea); + m = ((float)sum) / winarea; + s = sqrt ((((float)sum_sq) - ((float) (sum*sum))/winarea)/winarea); if (s > max_s) max_s = s; map_m.fset(i+wxh, j, m);