From e9837b0aa9b9ce7c9711d0c404d922040d43a46f Mon Sep 17 00:00:00 2001 From: Alexey Spizhevoy Date: Fri, 8 Jul 2011 13:59:23 +0000 Subject: [PATCH] added support of old CC into GPU mean shift routines --- modules/gpu/src/cuda/imgproc.cu | 8 +++++--- modules/gpu/src/imgproc_gpu.cpp | 4 ---- modules/gpu/src/mssegmentation.cpp | 2 -- modules/gpu/test/test_imgproc.cpp | 4 ++-- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/modules/gpu/src/cuda/imgproc.cu b/modules/gpu/src/cuda/imgproc.cu index e89b055390..7b762ab131 100644 --- a/modules/gpu/src/cuda/imgproc.cu +++ b/modules/gpu/src/cuda/imgproc.cu @@ -251,9 +251,11 @@ namespace cv { namespace gpu { namespace imgproc } extern "C" void meanShiftFiltering_gpu(const DevMem2D& src, DevMem2D dst, int sp, int sr, int maxIter, float eps) - { + { + printFuncAttrib(meanshift_kernel); + dim3 grid(1, 1, 1); - dim3 threads(32, 16, 1); + dim3 threads(32, 8, 1); grid.x = divUp(src.cols, threads.x); grid.y = divUp(src.rows, threads.y); @@ -269,7 +271,7 @@ namespace cv { namespace gpu { namespace imgproc extern "C" void meanShiftProc_gpu(const DevMem2D& src, DevMem2D dstr, DevMem2D dstsp, int sp, int sr, int maxIter, float eps) { dim3 grid(1, 1, 1); - dim3 threads(32, 16, 1); + dim3 threads(32, 8, 1); grid.x = divUp(src.cols, threads.x); grid.y = divUp(src.rows, threads.y); diff --git a/modules/gpu/src/imgproc_gpu.cpp b/modules/gpu/src/imgproc_gpu.cpp index de23877ce2..52e23d60b1 100644 --- a/modules/gpu/src/imgproc_gpu.cpp +++ b/modules/gpu/src/imgproc_gpu.cpp @@ -129,8 +129,6 @@ void cv::gpu::remap(const GpuMat& src, GpuMat& dst, const GpuMat& xmap, const Gp void cv::gpu::meanShiftFiltering(const GpuMat& src, GpuMat& dst, int sp, int sr, TermCriteria criteria) { - CV_Assert(TargetArchs::builtWith(FEATURE_SET_COMPUTE_12) && DeviceInfo().supports(FEATURE_SET_COMPUTE_12)); - if( src.empty() ) CV_Error( CV_StsBadArg, "The input image is empty" ); @@ -157,8 +155,6 @@ void cv::gpu::meanShiftFiltering(const GpuMat& src, GpuMat& dst, int sp, int sr, void cv::gpu::meanShiftProc(const GpuMat& src, GpuMat& dstr, GpuMat& dstsp, int sp, int sr, TermCriteria criteria) { - CV_Assert(TargetArchs::builtWith(FEATURE_SET_COMPUTE_12) && DeviceInfo().supports(FEATURE_SET_COMPUTE_12)); - if( src.empty() ) CV_Error( CV_StsBadArg, "The input image is empty" ); diff --git a/modules/gpu/src/mssegmentation.cpp b/modules/gpu/src/mssegmentation.cpp index fd62f432cb..609fdda7c8 100644 --- a/modules/gpu/src/mssegmentation.cpp +++ b/modules/gpu/src/mssegmentation.cpp @@ -227,8 +227,6 @@ inline int dist2(const cv::Vec2s& lhs, const cv::Vec2s& rhs) void cv::gpu::meanShiftSegmentation(const GpuMat& src, Mat& dst, int sp, int sr, int minsize, TermCriteria criteria) { - CV_Assert(TargetArchs::builtWith(FEATURE_SET_COMPUTE_12) && DeviceInfo().supports(FEATURE_SET_COMPUTE_12)); - CV_Assert(src.type() == CV_8UC4); const int nrows = src.rows; const int ncols = src.cols; diff --git a/modules/gpu/test/test_imgproc.cpp b/modules/gpu/test/test_imgproc.cpp index 575f45c2a2..05654f90e5 100644 --- a/modules/gpu/test/test_imgproc.cpp +++ b/modules/gpu/test/test_imgproc.cpp @@ -1478,7 +1478,7 @@ TEST_P(MeanShift, Proc) EXPECT_MAT_NEAR(spmap_template, spmap, 0.0); } -INSTANTIATE_TEST_CASE_P(ImgProc, MeanShift, testing::ValuesIn(devices(cv::gpu::FEATURE_SET_COMPUTE_12))); +INSTANTIATE_TEST_CASE_P(ImgProc, MeanShift, testing::ValuesIn(devices())); struct MeanShiftSegmentation : testing::TestWithParam< std::tr1::tuple > { @@ -1540,7 +1540,7 @@ TEST_P(MeanShiftSegmentation, Regression) } INSTANTIATE_TEST_CASE_P(ImgProc, MeanShiftSegmentation, testing::Combine( - testing::ValuesIn(devices(cv::gpu::FEATURE_SET_COMPUTE_12)), + testing::ValuesIn(devices()), testing::Values(0, 4, 20, 84, 340, 1364))); ////////////////////////////////////////////////////////////////////////////////