Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
d3aef0d3
Commit
d3aef0d3
authored
Jan 25, 2013
by
Andrey Kamaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix OpenCL build warnings
parent
2e026540
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
52 deletions
+40
-52
hough.cpp
modules/ocl/src/hough.cpp
+40
-52
No files found.
modules/ocl/src/hough.cpp
View file @
d3aef0d3
...
@@ -46,7 +46,7 @@ using namespace std;
...
@@ -46,7 +46,7 @@ using namespace std;
using
namespace
cv
;
using
namespace
cv
;
using
namespace
cv
::
ocl
;
using
namespace
cv
::
ocl
;
#if !defined (HAVE_OPENCL)
#if !defined (HAVE_OPENCL)
void
cv
::
ocl
::
HoughCircles
(
const
oclMat
&
,
oclMat
&
,
int
,
float
,
float
,
int
,
int
,
int
,
int
,
int
)
{
throw_nogpu
();
}
void
cv
::
ocl
::
HoughCircles
(
const
oclMat
&
,
oclMat
&
,
int
,
float
,
float
,
int
,
int
,
int
,
int
,
int
)
{
throw_nogpu
();
}
void
cv
::
ocl
::
HoughCircles
(
const
oclMat
&
,
oclMat
&
,
HoughCirclesBuf
&
,
int
,
float
,
float
,
int
,
int
,
int
,
int
,
int
)
{
throw_nogpu
();
}
void
cv
::
ocl
::
HoughCircles
(
const
oclMat
&
,
oclMat
&
,
HoughCirclesBuf
&
,
int
,
float
,
float
,
int
,
int
,
int
,
int
,
int
)
{
throw_nogpu
();
}
...
@@ -59,18 +59,6 @@ void cv::ocl::HoughCirclesDownload(const oclMat&, OutputArray) { throw_nogpu();
...
@@ -59,18 +59,6 @@ void cv::ocl::HoughCirclesDownload(const oclMat&, OutputArray) { throw_nogpu();
namespace
cv
{
namespace
ocl
{
namespace
cv
{
namespace
ocl
{
///////////////////////////OpenCL kernel strings///////////////////////////
///////////////////////////OpenCL kernel strings///////////////////////////
extern
const
char
*
imgproc_hough
;
extern
const
char
*
imgproc_hough
;
namespace
hough
{
int
buildPointList_gpu
(
const
oclMat
&
src
,
oclMat
&
list
);
void
circlesAccumCenters_gpu
(
const
unsigned
int
*
list
,
int
count
,
const
oclMat
&
dx
,
const
oclMat
&
dy
,
oclMat
&
accum
,
int
minRadius
,
int
maxRadius
,
float
idp
);
int
buildCentersList_gpu
(
const
oclMat
&
accum
,
oclMat
&
centers
,
int
threshold
);
int
circlesAccumRadius_gpu
(
const
oclMat
&
centers
,
int
centersCount
,
const
oclMat
&
list
,
int
count
,
oclMat
&
circles
,
int
maxCircles
,
float
dp
,
int
minRadius
,
int
maxRadius
,
int
threshold
);
}
}}
}}
...
@@ -78,7 +66,7 @@ namespace cv { namespace ocl {
...
@@ -78,7 +66,7 @@ namespace cv { namespace ocl {
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
// common functions
// common functions
namespace
cv
{
namespace
ocl
{
namespace
hough
namespace
{
{
int
buildPointList_gpu
(
const
oclMat
&
src
,
oclMat
&
list
)
int
buildPointList_gpu
(
const
oclMat
&
src
,
oclMat
&
list
)
{
{
...
@@ -87,9 +75,9 @@ namespace cv { namespace ocl { namespace hough
...
@@ -87,9 +75,9 @@ namespace cv { namespace ocl { namespace hough
int
totalCount
=
0
;
int
totalCount
=
0
;
int
err
=
CL_SUCCESS
;
int
err
=
CL_SUCCESS
;
cl_mem
counter
=
clCreateBuffer
(
src
.
clCxt
->
impl
->
clContext
,
cl_mem
counter
=
clCreateBuffer
(
src
.
clCxt
->
impl
->
clContext
,
CL_MEM_COPY_HOST_PTR
,
CL_MEM_COPY_HOST_PTR
,
sizeof
(
int
),
sizeof
(
int
),
&
totalCount
,
&
totalCount
,
&
err
);
&
err
);
openCLSafeCall
(
err
);
openCLSafeCall
(
err
);
...
@@ -99,7 +87,7 @@ namespace cv { namespace ocl { namespace hough
...
@@ -99,7 +87,7 @@ namespace cv { namespace ocl { namespace hough
const
int
PIXELS_PER_BLOCK
=
blkSizeX
*
PIXELS_PER_THREAD
;
const
int
PIXELS_PER_BLOCK
=
blkSizeX
*
PIXELS_PER_THREAD
;
const
size_t
glbSizeX
=
src
.
cols
%
(
PIXELS_PER_BLOCK
)
==
0
?
src
.
cols
:
MUL_UP
(
src
.
cols
,
PIXELS_PER_BLOCK
);
const
size_t
glbSizeX
=
src
.
cols
%
(
PIXELS_PER_BLOCK
)
==
0
?
src
.
cols
:
MUL_UP
(
src
.
cols
,
PIXELS_PER_BLOCK
);
const
size_t
glbSizeY
=
src
.
rows
%
blkSizeY
==
0
?
src
.
rows
:
MUL_UP
(
src
.
rows
,
blkSizeY
);
const
size_t
glbSizeY
=
src
.
rows
%
blkSizeY
==
0
?
src
.
rows
:
MUL_UP
(
src
.
rows
,
blkSizeY
);
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
glbSizeY
,
1
};
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
glbSizeY
,
1
};
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
...
@@ -111,23 +99,23 @@ namespace cv { namespace ocl { namespace hough
...
@@ -111,23 +99,23 @@ namespace cv { namespace ocl { namespace hough
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
counter
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
counter
));
openCLExecuteKernel
(
src
.
clCxt
,
&
imgproc_hough
,
"buildPointList"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
src
.
clCxt
,
&
imgproc_hough
,
"buildPointList"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLSafeCall
(
clEnqueueReadBuffer
(
src
.
clCxt
->
impl
->
clCmdQueue
,
counter
,
CL_TRUE
,
0
,
sizeof
(
int
),
&
totalCount
,
0
,
NULL
,
NULL
));
openCLSafeCall
(
clEnqueueReadBuffer
(
src
.
clCxt
->
impl
->
clCmdQueue
,
counter
,
CL_TRUE
,
0
,
sizeof
(
int
),
&
totalCount
,
0
,
NULL
,
NULL
));
openCLSafeCall
(
clReleaseMemObject
(
counter
));
openCLSafeCall
(
clReleaseMemObject
(
counter
));
return
totalCount
;
return
totalCount
;
}
}
}
}}
}
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
// HoughCircles
// HoughCircles
namespace
cv
{
namespace
ocl
{
namespace
hough
namespace
{
{
void
circlesAccumCenters_gpu
(
const
oclMat
&
list
,
int
count
,
const
oclMat
&
dx
,
const
oclMat
&
dy
,
oclMat
&
accum
,
int
minRadius
,
int
maxRadius
,
float
idp
)
void
circlesAccumCenters_gpu
(
const
oclMat
&
list
,
int
count
,
const
oclMat
&
dx
,
const
oclMat
&
dy
,
oclMat
&
accum
,
int
minRadius
,
int
maxRadius
,
float
idp
)
{
{
const
size_t
blkSizeX
=
256
;
const
size_t
blkSizeX
=
256
;
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
const
size_t
glbSizeX
=
count
%
blkSizeX
==
0
?
count
:
MUL_UP
(
count
,
blkSizeX
);
const
size_t
glbSizeX
=
count
%
blkSizeX
==
0
?
count
:
MUL_UP
(
count
,
blkSizeX
);
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
1
,
1
};
...
@@ -140,16 +128,16 @@ namespace cv { namespace ocl { namespace hough
...
@@ -140,16 +128,16 @@ namespace cv { namespace ocl { namespace hough
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dx
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dx
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dx
.
step
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dx
.
step
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dy
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dy
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dy
.
step
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dy
.
step
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
accum
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
accum
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
accum
.
step
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
accum
.
step
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
width
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
width
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
height
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
height
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
minRadius
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
minRadius
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
maxRadius
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
maxRadius
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
idp
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
idp
));
openCLExecuteKernel
(
accum
.
clCxt
,
&
imgproc_hough
,
"circlesAccumCenters"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
accum
.
clCxt
,
&
imgproc_hough
,
"circlesAccumCenters"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
}
}
int
buildCentersList_gpu
(
const
oclMat
&
accum
,
oclMat
&
centers
,
int
threshold
)
int
buildCentersList_gpu
(
const
oclMat
&
accum
,
oclMat
&
centers
,
int
threshold
)
...
@@ -157,16 +145,16 @@ namespace cv { namespace ocl { namespace hough
...
@@ -157,16 +145,16 @@ namespace cv { namespace ocl { namespace hough
int
totalCount
=
0
;
int
totalCount
=
0
;
int
err
=
CL_SUCCESS
;
int
err
=
CL_SUCCESS
;
cl_mem
counter
=
clCreateBuffer
(
accum
.
clCxt
->
impl
->
clContext
,
cl_mem
counter
=
clCreateBuffer
(
accum
.
clCxt
->
impl
->
clContext
,
CL_MEM_COPY_HOST_PTR
,
CL_MEM_COPY_HOST_PTR
,
sizeof
(
int
),
sizeof
(
int
),
&
totalCount
,
&
totalCount
,
&
err
);
&
err
);
openCLSafeCall
(
err
);
openCLSafeCall
(
err
);
const
size_t
blkSizeX
=
32
;
const
size_t
blkSizeX
=
32
;
const
size_t
blkSizeY
=
8
;
const
size_t
blkSizeY
=
8
;
size_t
localThreads
[
3
]
=
{
blkSizeX
,
blkSizeY
,
1
};
size_t
localThreads
[
3
]
=
{
blkSizeX
,
blkSizeY
,
1
};
const
size_t
glbSizeX
=
(
accum
.
cols
-
2
)
%
blkSizeX
==
0
?
accum
.
cols
-
2
:
MUL_UP
(
accum
.
cols
-
2
,
blkSizeX
);
const
size_t
glbSizeX
=
(
accum
.
cols
-
2
)
%
blkSizeX
==
0
?
accum
.
cols
-
2
:
MUL_UP
(
accum
.
cols
-
2
,
blkSizeX
);
const
size_t
glbSizeY
=
(
accum
.
rows
-
2
)
%
blkSizeY
==
0
?
accum
.
rows
-
2
:
MUL_UP
(
accum
.
rows
-
2
,
blkSizeY
);
const
size_t
glbSizeY
=
(
accum
.
rows
-
2
)
%
blkSizeY
==
0
?
accum
.
rows
-
2
:
MUL_UP
(
accum
.
rows
-
2
,
blkSizeY
);
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
glbSizeY
,
1
};
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
glbSizeY
,
1
};
...
@@ -181,10 +169,10 @@ namespace cv { namespace ocl { namespace hough
...
@@ -181,10 +169,10 @@ namespace cv { namespace ocl { namespace hough
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
counter
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
counter
));
openCLExecuteKernel
(
accum
.
clCxt
,
&
imgproc_hough
,
"buildCentersList"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
accum
.
clCxt
,
&
imgproc_hough
,
"buildCentersList"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLSafeCall
(
clEnqueueReadBuffer
(
accum
.
clCxt
->
impl
->
clCmdQueue
,
counter
,
CL_TRUE
,
0
,
sizeof
(
int
),
&
totalCount
,
0
,
NULL
,
NULL
));
openCLSafeCall
(
clEnqueueReadBuffer
(
accum
.
clCxt
->
impl
->
clCmdQueue
,
counter
,
CL_TRUE
,
0
,
sizeof
(
int
),
&
totalCount
,
0
,
NULL
,
NULL
));
openCLSafeCall
(
clReleaseMemObject
(
counter
));
openCLSafeCall
(
clReleaseMemObject
(
counter
));
return
totalCount
;
return
totalCount
;
}
}
...
@@ -196,13 +184,13 @@ namespace cv { namespace ocl { namespace hough
...
@@ -196,13 +184,13 @@ namespace cv { namespace ocl { namespace hough
int
totalCount
=
0
;
int
totalCount
=
0
;
int
err
=
CL_SUCCESS
;
int
err
=
CL_SUCCESS
;
cl_mem
counter
=
clCreateBuffer
(
circles
.
clCxt
->
impl
->
clContext
,
cl_mem
counter
=
clCreateBuffer
(
circles
.
clCxt
->
impl
->
clContext
,
CL_MEM_COPY_HOST_PTR
,
CL_MEM_COPY_HOST_PTR
,
sizeof
(
int
),
sizeof
(
int
),
&
totalCount
,
&
totalCount
,
&
err
);
&
err
);
openCLSafeCall
(
err
);
openCLSafeCall
(
err
);
const
size_t
blkSizeX
=
circles
.
clCxt
->
impl
->
maxWorkGroupSize
;
const
size_t
blkSizeX
=
circles
.
clCxt
->
impl
->
maxWorkGroupSize
;
size_t
localThreads
[
3
]
=
{
blkSizeX
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
blkSizeX
,
1
,
1
};
const
size_t
glbSizeX
=
centersCount
*
blkSizeX
;
const
size_t
glbSizeX
=
centersCount
*
blkSizeX
;
...
@@ -227,10 +215,10 @@ namespace cv { namespace ocl { namespace hough
...
@@ -227,10 +215,10 @@ namespace cv { namespace ocl { namespace hough
CV_Assert
(
circles
.
offset
==
0
);
CV_Assert
(
circles
.
offset
==
0
);
openCLExecuteKernel
(
circles
.
clCxt
,
&
imgproc_hough
,
"circlesAccumRadius"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
circles
.
clCxt
,
&
imgproc_hough
,
"circlesAccumRadius"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLSafeCall
(
clEnqueueReadBuffer
(
circles
.
clCxt
->
impl
->
clCmdQueue
,
counter
,
CL_TRUE
,
0
,
sizeof
(
int
),
&
totalCount
,
0
,
NULL
,
NULL
));
openCLSafeCall
(
clEnqueueReadBuffer
(
circles
.
clCxt
->
impl
->
clCmdQueue
,
counter
,
CL_TRUE
,
0
,
sizeof
(
int
),
&
totalCount
,
0
,
NULL
,
NULL
));
openCLSafeCall
(
clReleaseMemObject
(
counter
));
openCLSafeCall
(
clReleaseMemObject
(
counter
));
totalCount
=
::
min
(
totalCount
,
maxCircles
);
totalCount
=
::
min
(
totalCount
,
maxCircles
);
...
@@ -239,7 +227,7 @@ namespace cv { namespace ocl { namespace hough
...
@@ -239,7 +227,7 @@ namespace cv { namespace ocl { namespace hough
}
}
}
}}
// namespace cv { namespace ocl { namespace hough
}
// namespace
...
@@ -261,13 +249,13 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
...
@@ -261,13 +249,13 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
CV_Assert
(
cannyThreshold
>
0
);
CV_Assert
(
cannyThreshold
>
0
);
CV_Assert
(
votesThreshold
>
0
);
CV_Assert
(
votesThreshold
>
0
);
CV_Assert
(
maxCircles
>
0
);
CV_Assert
(
maxCircles
>
0
);
const
float
idp
=
1.0
f
/
dp
;
const
float
idp
=
1.0
f
/
dp
;
cv
::
ocl
::
Canny
(
src
,
buf
.
cannyBuf
,
buf
.
edges
,
std
::
max
(
cannyThreshold
/
2
,
1
),
cannyThreshold
);
cv
::
ocl
::
Canny
(
src
,
buf
.
cannyBuf
,
buf
.
edges
,
std
::
max
(
cannyThreshold
/
2
,
1
),
cannyThreshold
);
ensureSizeIsEnough
(
1
,
src
.
size
().
area
(),
CV_32SC1
,
buf
.
srcPoints
);
ensureSizeIsEnough
(
1
,
src
.
size
().
area
(),
CV_32SC1
,
buf
.
srcPoints
);
const
int
pointsCount
=
hough
::
buildPointList_gpu
(
buf
.
edges
,
buf
.
srcPoints
);
const
int
pointsCount
=
buildPointList_gpu
(
buf
.
edges
,
buf
.
srcPoints
);
if
(
pointsCount
==
0
)
if
(
pointsCount
==
0
)
{
{
circles
.
release
();
circles
.
release
();
...
@@ -277,10 +265,10 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
...
@@ -277,10 +265,10 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
ensureSizeIsEnough
(
cvCeil
(
src
.
rows
*
idp
)
+
2
,
cvCeil
(
src
.
cols
*
idp
)
+
2
,
CV_32SC1
,
buf
.
accum
);
ensureSizeIsEnough
(
cvCeil
(
src
.
rows
*
idp
)
+
2
,
cvCeil
(
src
.
cols
*
idp
)
+
2
,
CV_32SC1
,
buf
.
accum
);
buf
.
accum
.
setTo
(
Scalar
::
all
(
0
));
buf
.
accum
.
setTo
(
Scalar
::
all
(
0
));
hough
::
circlesAccumCenters_gpu
(
buf
.
srcPoints
,
pointsCount
,
buf
.
cannyBuf
.
dx
,
buf
.
cannyBuf
.
dy
,
buf
.
accum
,
minRadius
,
maxRadius
,
idp
);
circlesAccumCenters_gpu
(
buf
.
srcPoints
,
pointsCount
,
buf
.
cannyBuf
.
dx
,
buf
.
cannyBuf
.
dy
,
buf
.
accum
,
minRadius
,
maxRadius
,
idp
);
ensureSizeIsEnough
(
1
,
src
.
size
().
area
(),
CV_32SC1
,
buf
.
centers
);
ensureSizeIsEnough
(
1
,
src
.
size
().
area
(),
CV_32SC1
,
buf
.
centers
);
int
centersCount
=
hough
::
buildCentersList_gpu
(
buf
.
accum
,
buf
.
centers
,
votesThreshold
);
int
centersCount
=
buildCentersList_gpu
(
buf
.
accum
,
buf
.
centers
,
votesThreshold
);
if
(
centersCount
==
0
)
if
(
centersCount
==
0
)
{
{
circles
.
release
();
circles
.
release
();
...
@@ -304,9 +292,9 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
...
@@ -304,9 +292,9 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
oldBuf
,
oldBuf
,
0
,
0
,
NULL
,
NULL
,
NULL
));
NULL
));
const
int
cellSize
=
cvRound
(
minDist
);
const
int
cellSize
=
cvRound
(
minDist
);
const
int
gridWidth
=
(
src
.
cols
+
cellSize
-
1
)
/
cellSize
;
const
int
gridWidth
=
(
src
.
cols
+
cellSize
-
1
)
/
cellSize
;
const
int
gridHeight
=
(
src
.
rows
+
cellSize
-
1
)
/
cellSize
;
const
int
gridHeight
=
(
src
.
rows
+
cellSize
-
1
)
/
cellSize
;
...
@@ -348,7 +336,7 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
...
@@ -348,7 +336,7 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
const
int
val
=
m
[
j
];
const
int
val
=
m
[
j
];
const
int
jx
=
val
&
0xFFFF
;
const
int
jx
=
val
&
0xFFFF
;
const
int
jy
=
(
val
>>
16
)
&
0xFFFF
;
const
int
jy
=
(
val
>>
16
)
&
0xFFFF
;
float
dx
=
(
float
)(
px
-
jx
);
float
dx
=
(
float
)(
px
-
jx
);
float
dy
=
(
float
)(
py
-
jy
);
float
dy
=
(
float
)(
py
-
jy
);
...
@@ -378,13 +366,13 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
...
@@ -378,13 +366,13 @@ void cv::ocl::HoughCircles(const oclMat& src, oclMat& circles, HoughCirclesBuf&
newBuf
,
newBuf
,
0
,
0
,
0
,
0
,
0
));
0
));
centersCount
=
newCount
;
centersCount
=
newCount
;
}
}
ensureSizeIsEnough
(
1
,
maxCircles
,
CV_32FC3
,
circles
);
ensureSizeIsEnough
(
1
,
maxCircles
,
CV_32FC3
,
circles
);
const
int
circlesCount
=
hough
::
circlesAccumRadius_gpu
(
buf
.
centers
,
centersCount
,
const
int
circlesCount
=
circlesAccumRadius_gpu
(
buf
.
centers
,
centersCount
,
buf
.
srcPoints
,
pointsCount
,
buf
.
srcPoints
,
pointsCount
,
circles
,
maxCircles
,
circles
,
maxCircles
,
dp
,
minRadius
,
maxRadius
,
votesThreshold
);
dp
,
minRadius
,
maxRadius
,
votesThreshold
);
...
@@ -399,7 +387,7 @@ void cv::ocl::HoughCirclesDownload(const oclMat& d_circles, cv::OutputArray h_ci
...
@@ -399,7 +387,7 @@ void cv::ocl::HoughCirclesDownload(const oclMat& d_circles, cv::OutputArray h_ci
{
{
// FIX ME: garbage values are copied!
// FIX ME: garbage values are copied!
CV_Error
(
CV_StsNotImplemented
,
"HoughCirclesDownload is not implemented"
);
CV_Error
(
CV_StsNotImplemented
,
"HoughCirclesDownload is not implemented"
);
if
(
d_circles
.
empty
())
if
(
d_circles
.
empty
())
{
{
h_circles_
.
release
();
h_circles_
.
release
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment