fix cuda::normalize (dtype < 0) case
authorVladislav Vinogradov <vlad.vinogradov@itseez.com>
Fri, 2 Oct 2015 08:41:01 +0000 (11:41 +0300)
committerVladislav Vinogradov <vlad.vinogradov@itseez.com>
Fri, 2 Oct 2015 08:41:01 +0000 (11:41 +0300)
modules/cudaarithm/src/cuda/normalize.cu
modules/cudaarithm/test/test_reductions.cpp

index efbc94e..c83f2c0 100644 (file)
@@ -249,6 +249,10 @@ void cv::cuda::normalize(InputArray _src, OutputArray _dst, double a, double b,
     CV_Assert( src.channels() == 1 );
     CV_Assert( mask.empty() || (mask.size() == src.size() && mask.type() == CV_8U) );
 
+    if (dtype < 0)
+    {
+        dtype = _dst.fixedType() ? _dst.type() : src.type();
+    }
     dtype = CV_MAT_DEPTH(dtype);
 
     const int src_depth = src.depth();
index 9a88549..a0ff0df 100644 (file)
@@ -951,11 +951,11 @@ CUDA_TEST_P(Normalize, WithMask)
 
     cv::cuda::GpuMat dst = createMat(size, type, useRoi);
     dst.setTo(cv::Scalar::all(0));
-    cv::cuda::normalize(loadMat(src, useRoi), dst, alpha, beta, norm_type, type, loadMat(mask, useRoi));
+    cv::cuda::normalize(loadMat(src, useRoi), dst, alpha, beta, norm_type, -1, loadMat(mask, useRoi));
 
     cv::Mat dst_gold(size, type);
     dst_gold.setTo(cv::Scalar::all(0));
-    cv::normalize(src, dst_gold, alpha, beta, norm_type, type, mask);
+    cv::normalize(src, dst_gold, alpha, beta, norm_type, -1, mask);
 
     EXPECT_MAT_NEAR(dst_gold, dst, type < CV_32F ? 1.0 : 1e-4);
 }