From 72e4f72a7593bb51cf962d02b2e313c8d32bdd67 Mon Sep 17 00:00:00 2001 From: Chechli Date: Sat, 15 Feb 2014 17:31:14 +0100 Subject: [PATCH 1/5] Update hough_circles.cpp --- modules/cudaimgproc/src/hough_circles.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/cudaimgproc/src/hough_circles.cpp b/modules/cudaimgproc/src/hough_circles.cpp index 0cf94a63d1..c3ca9714ed 100644 --- a/modules/cudaimgproc/src/hough_circles.cpp +++ b/modules/cudaimgproc/src/hough_circles.cpp @@ -41,6 +41,7 @@ //M*/ #include "precomp.hpp" +#include using namespace cv; using namespace cv::cuda; @@ -139,6 +140,8 @@ namespace Ptr filterDy_; Ptr canny_; }; + + bool centersCompare(Vec3f a, Vec3f b) {return (a[2] > b[2]);} HoughCirclesDetectorImpl::HoughCirclesDetectorImpl(float dp, float minDist, int cannyThreshold, int votesThreshold, int minRadius, int maxRadius, int maxCircles) : @@ -219,9 +222,21 @@ namespace const float minDist2 = minDist_ * minDist_; + vector sortBuf; + for(int i=0; i(temp[1]+1, temp[0]+1); + sortBuf.push_back(temp); + } + std::sort(sortBuf.begin(), sortBuf.end(), centersCompare); + for (int i = 0; i < centersCount; ++i) { - ushort2 p = oldBuf[i]; + ushort2 p; + p.x = sortBuf[i][0]; + p.y = sortBuf[i][1]; bool good = true; From 10465c546aaf6e535d40a2c66822ef630108add8 Mon Sep 17 00:00:00 2001 From: Chechli Date: Sun, 16 Feb 2014 13:26:00 +0100 Subject: [PATCH 2/5] Update hough_circles.cpp --- modules/cudaimgproc/src/hough_circles.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/cudaimgproc/src/hough_circles.cpp b/modules/cudaimgproc/src/hough_circles.cpp index c3ca9714ed..68c87b6bb6 100644 --- a/modules/cudaimgproc/src/hough_circles.cpp +++ b/modules/cudaimgproc/src/hough_circles.cpp @@ -195,7 +195,10 @@ namespace accum_.setTo(Scalar::all(0)); circlesAccumCenters_gpu(srcPoints, pointsCount, dx_, dy_, accum_, minRadius_, maxRadius_, idp); - + + Mat tt; //CPU copy of accum_ + accum_.download(tt); + int centersCount = buildCentersList_gpu(accum_, centers, votesThreshold_); if (centersCount == 0) { From 640a45d3596003cad3845d877ba592f3570c54b3 Mon Sep 17 00:00:00 2001 From: Chechli Date: Mon, 17 Feb 2014 09:48:51 +0100 Subject: [PATCH 3/5] Update precomp.hpp --- modules/cudaimgproc/src/precomp.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/cudaimgproc/src/precomp.hpp b/modules/cudaimgproc/src/precomp.hpp index 964c28c158..3bbb2a8f08 100644 --- a/modules/cudaimgproc/src/precomp.hpp +++ b/modules/cudaimgproc/src/precomp.hpp @@ -60,5 +60,6 @@ #endif #include +#include #endif /* __OPENCV_PRECOMP_H__ */ From 9211d1ac2d2b081cce64a00e9392a9458b00f13e Mon Sep 17 00:00:00 2001 From: Chechli Date: Mon, 17 Feb 2014 09:50:32 +0100 Subject: [PATCH 4/5] Update hough_circles.cpp --- modules/cudaimgproc/src/hough_circles.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/cudaimgproc/src/hough_circles.cpp b/modules/cudaimgproc/src/hough_circles.cpp index 68c87b6bb6..d78919dab0 100644 --- a/modules/cudaimgproc/src/hough_circles.cpp +++ b/modules/cudaimgproc/src/hough_circles.cpp @@ -41,7 +41,6 @@ //M*/ #include "precomp.hpp" -#include using namespace cv; using namespace cv::cuda; @@ -134,6 +133,7 @@ namespace GpuMat dx_, dy_; GpuMat edges_; GpuMat accum_; + Mat tt; //CPU copy of accum_ GpuMat list_; GpuMat result_; Ptr filterDx_; @@ -196,7 +196,6 @@ namespace circlesAccumCenters_gpu(srcPoints, pointsCount, dx_, dy_, accum_, minRadius_, maxRadius_, idp); - Mat tt; //CPU copy of accum_ accum_.download(tt); int centersCount = buildCentersList_gpu(accum_, centers, votesThreshold_); From 768da4d95a77d8a7248350d53e0337b507041072 Mon Sep 17 00:00:00 2001 From: Chechli Date: Tue, 18 Feb 2014 08:50:33 +0100 Subject: [PATCH 5/5] Update hough_circles.cpp --- modules/cudaimgproc/src/hough_circles.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/cudaimgproc/src/hough_circles.cpp b/modules/cudaimgproc/src/hough_circles.cpp index d78919dab0..2a3abe4868 100644 --- a/modules/cudaimgproc/src/hough_circles.cpp +++ b/modules/cudaimgproc/src/hough_circles.cpp @@ -140,8 +140,8 @@ namespace Ptr filterDy_; Ptr canny_; }; - - bool centersCompare(Vec3f a, Vec3f b) {return (a[2] > b[2]);} + + bool centersCompare(Vec3f a, Vec3f b) {return (a[2] > b[2]);} HoughCirclesDetectorImpl::HoughCirclesDetectorImpl(float dp, float minDist, int cannyThreshold, int votesThreshold, int minRadius, int maxRadius, int maxCircles) : @@ -195,9 +195,9 @@ namespace accum_.setTo(Scalar::all(0)); circlesAccumCenters_gpu(srcPoints, pointsCount, dx_, dy_, accum_, minRadius_, maxRadius_, idp); - + accum_.download(tt); - + int centersCount = buildCentersList_gpu(accum_, centers, votesThreshold_); if (centersCount == 0) {