From 2627c91c5e3b2c2f853c87ad6843a20ef0e77ecb Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Mon, 24 Sep 2012 12:57:39 +0400 Subject: [PATCH] added platform specific definitions in resize algorithm --- modules/imgproc/src/imgwarp.cpp | 64 ++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 509aea15f0..6752d22b84 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -1399,6 +1399,12 @@ struct DecimateAlpha float alpha; }; +#ifdef __APPLE__ + #define HAVE_TBB HAVE_GDC +#elif defined _MSC_VER && _MSC_VER >= 1600 + #define HABE_TBB HAVE_CONCURRENCY +#endif + template class resizeArea_Invoker : public ParallelLoopBody @@ -1416,8 +1422,8 @@ public: , cur_dy_ofs(_cur_dy_ofs), bands(_bands) #endif { - if (src.size() == Size(16, 16) && dst.size() == Size(5, 5)) - std::cout << "scale_y = " << scale_y_ << std::endl << std::endl; +// if (src.size() == Size(16, 16) && dst.size() == Size(5, 5)) +// std::cout << "scale_y = " << scale_y_ << std::endl << std::endl; } #ifdef HAVE_TBB @@ -1488,8 +1494,8 @@ public: if( (cur_dy + 1)*scale_y <= sy + 1 || sy == ssize.height - 1 ) { - if (dsize == Size(5, 5) && ssize == Size(16, 16)) - std::cout << "Band: (" << range.start << ", " << range.end << ")" << std::endl; +// if (dsize == Size(5, 5) && ssize == Size(16, 16)) +// std::cout << "Band: (" << range.start << ", " << range.end << ")" << std::endl; WT beta = std::max(sy + 1 - (cur_dy+1)*scale_y, (WT)0); WT beta1 = 1 - beta; @@ -1501,14 +1507,14 @@ public: for( dx = 0; dx < dsize.width; dx++ ) { D[dx] = saturate_cast((sum[dx] + buf[dx]) / min(scale_y, src.rows - cur_dy * scale_y)); // - if (dsize == Size(5, 5) && ssize == Size(16, 16)) - { - std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl; - std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl; - std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl; - std::cout << "D[" << dx << "] = " << D[dx] << std::endl; - std::cout << std::endl; - } +// if (dsize == Size(5, 5) && ssize == Size(16, 16)) +// { +// std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl; +// std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl; +// std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl; +// std::cout << "D[" << dx << "] = " << D[dx] << std::endl; +// std::cout << std::endl; +// } sum[dx] = buf[dx] = 0; } } @@ -1516,15 +1522,15 @@ public: for( dx = 0; dx < dsize.width; dx++ ) { D[dx] = saturate_cast((sum[dx] + buf[dx]* beta1)/ min(scale_y, src.rows - cur_dy*scale_y)); // - if (dsize == Size(5, 5) && ssize == Size(16, 16)) - { - std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl; - std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl; - std::cout << "beta1 = " << beta1 << std::endl; - std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl; - std::cout << "D[" << dx << "] = " << D[dx] << std::endl; - std::cout << std::endl; - } +// if (dsize == Size(5, 5) && ssize == Size(16, 16)) +// { +// std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl; +// std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl; +// std::cout << "beta1 = " << beta1 << std::endl; +// std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl; +// std::cout << "D[" << dx << "] = " << D[dx] << std::endl; +// std::cout << std::endl; +// } sum[dx] = buf[dx]*beta; buf[dx] = 0; } @@ -1605,17 +1611,17 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in } // bands.push_back(std::make_pair(index, ssize.height)); #endif - + #ifdef HAVE_TBB Range range(0, bands.size()); - if (dsize == Size(5, 5) && ssize == Size(16, 16)) - { - std::cout << "Bands" << std::endl; - for (std::vector >::const_iterator i = bands.begin(), end = bands.end(); i != end; ++i) - std::cout << i->first << " " << i->second << std::endl; - std::cout << std::endl; - } +// if (dsize == Size(5, 5) && ssize == Size(16, 16)) +// { +// std::cout << "Bands" << std::endl; +// for (std::vector >::const_iterator i = bands.begin(), end = bands.end(); i != end; ++i) +// std::cout << i->first << " " << i->second << std::endl; +// std::cout << std::endl; +// } resizeArea_Invoker invoker(src, dst, xofs, xofs_count, scale_y_, cur_dy_ofs, bands); #else