From: Tomoaki Teshima Date: Fri, 16 Mar 2018 07:48:03 +0000 (+0900) Subject: follow histogram X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1^2~717^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f4e5d777e856f751c4318f0c633dcce37cfa66f2;p=platform%2Fupstream%2Fopencv.git follow histogram --- diff --git a/modules/cudaarithm/src/reductions.cpp b/modules/cudaarithm/src/reductions.cpp index 1adf05f..ce1bc23 100644 --- a/modules/cudaarithm/src/reductions.cpp +++ b/modules/cudaarithm/src/reductions.cpp @@ -137,11 +137,12 @@ void cv::cuda::meanStdDev(InputArray _src, OutputArray _dst, Stream& stream) if (!deviceSupports(FEATURE_SET_COMPUTE_13)) CV_Error(cv::Error::StsNotImplemented, "Not sufficient compute capebility"); - const GpuMat src = getInputMat(_src, stream); + GpuMat src = getInputMat(_src, stream); CV_Assert( src.type() == CV_8UC1 ); - GpuMat dst = getOutputMat(_dst, 1, 2, CV_64FC1, stream); + _dst.create(1, 2, CV_64FC1); + GpuMat dst = _dst.getGpuMat(); NppiSize sz; sz.width = src.cols; @@ -157,6 +158,9 @@ void cv::cuda::meanStdDev(InputArray _src, OutputArray _dst, Stream& stream) BufferPool pool(stream); GpuMat buf = pool.getBuffer(1, bufSize, CV_8UC1); + // detail: https://github.com/opencv/opencv/issues/11063 + //NppStreamHandler h(StreamAccessor::getStream(stream)); + nppSafeCall( nppiMean_StdDev_8u_C1R(src.ptr(), static_cast(src.step), sz, buf.ptr(), dst.ptr(), dst.ptr() + 1) ); syncOutput(dst, _dst, stream); diff --git a/modules/cudaimgproc/src/histogram.cpp b/modules/cudaimgproc/src/histogram.cpp index fce5057..6e219b6 100644 --- a/modules/cudaimgproc/src/histogram.cpp +++ b/modules/cudaimgproc/src/histogram.cpp @@ -107,7 +107,7 @@ namespace hist void cv::cuda::equalizeHist(InputArray _src, OutputArray _dst, Stream& _stream) { - GpuMat src = _src.getGpuMat(); + GpuMat src = getInputMat(_src, _stream); CV_Assert( src.type() == CV_8UC1 ); diff --git a/modules/cudaimgproc/test/test_histogram.cpp b/modules/cudaimgproc/test/test_histogram.cpp index 9559835..eb08460 100644 --- a/modules/cudaimgproc/test/test_histogram.cpp +++ b/modules/cudaimgproc/test/test_histogram.cpp @@ -194,6 +194,23 @@ PARAM_TEST_CASE(EqualizeHist, cv::cuda::DeviceInfo, cv::Size) } }; +CUDA_TEST_P(EqualizeHist, Async) +{ + cv::Mat src = randomMat(size, CV_8UC1); + + cv::cuda::Stream stream; + + cv::cuda::GpuMat dst; + cv::cuda::equalizeHist(loadMat(src), dst, stream); + + stream.waitForCompletion(); + + cv::Mat dst_gold; + cv::equalizeHist(src, dst_gold); + + EXPECT_MAT_NEAR(dst_gold, dst, 3.0); +} + CUDA_TEST_P(EqualizeHist, Accuracy) { cv::Mat src = randomMat(size, CV_8UC1);