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
cf04fed3
Commit
cf04fed3
authored
Jul 30, 2012
by
niko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix the compilation bugs
parent
c0a41054
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
101 additions
and
26 deletions
+101
-26
OpenCVDetectOpenCL.cmake
cmake/OpenCVDetectOpenCL.cmake
+1
-1
cl2cpp.py
modules/ocl/cl2cpp.py
+1
-1
imgproc.cpp
modules/ocl/src/imgproc.cpp
+87
-10
imgproc_remap.cl
modules/ocl/src/kernels/imgproc_remap.cl
+0
-0
precomp.hpp
modules/ocl/test/precomp.hpp
+1
-1
test_imgproc.cpp
modules/ocl/test/test_imgproc.cpp
+11
-13
No files found.
cmake/OpenCVDetectOpenCL.cmake
View file @
cf04fed3
...
...
@@ -2,7 +2,7 @@ if(APPLE)
set
(
OPENCL_FOUND YES
)
set
(
OPENCL_LIBRARIES
"-framework OpenCL"
)
else
()
find_package
(
OpenCL
)
find_package
(
OpenCL
QUIET
)
# Try AMD/ATI Stream SDK
if
(
NOT OPENCL_FOUND
)
...
...
modules/ocl/cl2cpp.py
View file @
cf04fed3
...
...
@@ -14,7 +14,7 @@ cl_list = glob.glob(os.path.join(indir, "*.cl"))
kfile
=
open
(
outname
,
"wt"
)
kfile
.
write
(
"""// This file is auto-generated. Do not edit!
#include "precomp.hpp"
//
#include "precomp.hpp"
namespace cv
{
namespace ocl
...
...
modules/ocl/src/imgproc.cpp
View file @
cf04fed3
...
...
@@ -260,7 +260,7 @@ namespace cv
CV_Assert
((
!
map2
.
data
||
map2
.
size
()
==
map1
.
size
()));
dst
.
create
(
map1
.
size
(),
src
.
type
());
int
depth
=
src
.
depth
(),
map_depth
=
map1
.
depth
();
string
kernelName
;
...
...
@@ -279,28 +279,107 @@ namespace cv
kernelName
=
"remapNNSConstant"
;
}
int
type
=
src
.
type
();
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
size_t
glbSizeX
;
if
(
src
.
type
()
==
CV_8UC1
||
src
.
type
()
==
CV_8UC2
||
src
.
type
()
==
CV_8UC4
)
int
channels
=
dst
.
channels
();
int
depth
=
dst
.
depth
();
int
type
=
src
.
type
();
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
size_t
glbSizeX
;
int
cols
=
dst
.
cols
;
if
(
src
.
type
()
==
CV_8UC1
)
{
cols
=
(
dst
.
cols
+
dst
.
offset
%
4
+
3
)
/
4
;
glbSizeX
=
cols
%
blkSizeX
==
0
?
cols
:
(
cols
/
blkSizeX
+
1
)
*
blkSizeX
;
}
else
if
(
src
.
type
()
==
CV_8UC4
||
src
.
type
()
==
CV_32FC1
)
{
size_t
cols
=
(
dst
.
cols
+
dst
.
offset
%
4
+
3
)
/
4
;
cols
=
(
dst
.
cols
+
(
dst
.
offset
>>
2
)
%
4
+
3
)
/
4
;
glbSizeX
=
cols
%
blkSizeX
==
0
?
cols
:
(
cols
/
blkSizeX
+
1
)
*
blkSizeX
;
}
else
{
glbSizeX
=
dst
.
cols
%
blkSizeX
==
0
?
dst
.
cols
:
(
dst
.
cols
/
blkSizeX
+
1
)
*
blkSizeX
;
}
size_t
glbSizeY
=
dst
.
rows
%
blkSizeY
==
0
?
dst
.
rows
:
(
dst
.
rows
/
blkSizeY
+
1
)
*
blkSizeY
;
size_t
globalThreads
[
3
]
=
{
glbSizeX
,
glbSizeY
,
1
};
size_t
localThreads
[
3
]
=
{
blkSizeX
,
blkSizeY
,
1
};
/*
/////////////////////////////
//using the image buffer
/////////////////////////////
size_t image_row_pitch = 0;
cl_int err1, err2, err3;
cl_mem_flags flags1 = CL_MEM_READ_ONLY;
cl_image_format format;
if(src.type() == CV_8UC1)
{
format.image_channel_order = CL_R;
format.image_channel_data_type = CL_UNSIGNED_INT8;
}
else if(src.type() == CV_8UC4)
{
format.image_channel_order = CL_RGBA;
format.image_channel_data_type = CL_UNSIGNED_INT8;
}
else if(src.type() == CV_32FC1)
{
format.image_channel_order = CL_R;
format.image_channel_data_type = CL_FLOAT;
}
else if(src.type() == CV_32FC4)
{
format.image_channel_order = CL_RGBA;
format.image_channel_data_type = CL_FLOAT;
}
cl_mem srcImage = clCreateImage2D(clCxt->impl->clContext, flags1, &format, src.cols, src.rows,
image_row_pitch, NULL, &err1);
if(err1 != CL_SUCCESS)
{
printf("Error creating CL image buffer, error code %d\n", err1);
return;
}
const size_t src_origin[3] = {0, 0, 0};
const size_t region[3] = {src.cols, src.rows, 1};
cl_event BtoI_event, ItoB_event;
err3 = clEnqueueCopyBufferToImage(clCxt->impl->clCmdQueue, (cl_mem)src.data, srcImage,
0, src_origin, region, 0, NULL, NULL);
if(err3 != CL_SUCCESS)
{
printf("Error copying buffer to image\n");
printf("Error code %d \n", err3);
return;
}
// clWaitForEvents(1, &BtoI_event);
cl_int ret;
Mat test(src.rows, src.cols, CV_8UC1);
memset(test.data, 0, src.rows*src.cols);
ret = clEnqueueReadImage(clCxt->impl->clCmdQueue, srcImage, CL_TRUE,
src_origin, region, 0, 0, test.data, NULL, NULL, &ItoB_event);
if(ret != CL_SUCCESS)
{
printf("read image error, %d ", ret);
return;
}
clWaitForEvents(1, &ItoB_event);
cout << "src" << endl;
cout << src << endl;
cout<<"image:"<<endl;
cout<< test << endl;
*/
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
if
(
map1
.
channels
()
==
2
)
{
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
),(
void
*
)
&
dst
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
),(
void
*
)
&
src
.
data
));
// args.push_back( make_pair(sizeof(cl_mem),(void*)&srcImage)); //imageBuffer
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
),(
void
*
)
&
map1
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),(
void
*
)
&
dst
.
offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),(
void
*
)
&
src
.
offset
));
...
...
@@ -314,12 +393,10 @@ namespace cv
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),(
void
*
)
&
dst
.
rows
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),(
void
*
)
&
map1
.
cols
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),(
void
*
)
&
map1
.
rows
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
cols
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_double4
),(
void
*
)
&
borderValue
));
}
openCLExecuteKernel
(
clCxt
,
&
imgproc_remap
,
kernelName
,
globalThreads
,
localThreads
,
args
,
src
.
channels
(),
src
.
depth
());
}
////////////////////////////////////////////////////////////////////////////////////////////
...
...
modules/ocl/src/kernels/imgproc_remap.cl
View file @
cf04fed3
This diff is collapsed.
Click to expand it.
modules/ocl/test/precomp.hpp
View file @
cf04fed3
...
...
@@ -67,7 +67,7 @@
#include "interpolation.hpp"
//#include "add_test_info.h"
#define OPENCV_DEFAULT_OPENCL_DEVICE CVCL_DEVICE_TYPE_
ALL
#define OPENCV_DEFAULT_OPENCL_DEVICE CVCL_DEVICE_TYPE_
GPU
#endif
modules/ocl/test/test_imgproc.cpp
View file @
cf04fed3
...
...
@@ -858,10 +858,10 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
cv
::
RNG
&
rng
=
TS
::
ptr
()
->
get_rng
();
//cv::Size size = cv::Size(20, 20);
cv
::
Size
srcSize
=
cv
::
Size
(
1
5
,
2
0
);
cv
::
Size
dstSize
=
cv
::
Size
(
20
,
2
0
);
cv
::
Size
map1Size
=
cv
::
Size
(
20
,
2
0
);
double
min
=
1
,
max
=
20
;
cv
::
Size
srcSize
=
cv
::
Size
(
1
00
,
10
0
);
cv
::
Size
dstSize
=
cv
::
Size
(
100
,
10
0
);
cv
::
Size
map1Size
=
cv
::
Size
(
100
,
10
0
);
double
min
=
5
,
max
=
16
;
if
(
srcType
!=
nulltype
)
{
...
...
@@ -898,14 +898,11 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
src_roicols
=
rng
.
uniform
(
1
,
src
.
cols
);
src_roirows
=
rng
.
uniform
(
1
,
src
.
rows
);
cout
<<
"dst_roicols: "
<<
dst_roicols
<<
"dst_roirows: "
<<
dst_roirows
<<
endl
;
cout
<<
"src_roicols: "
<<
src_roicols
<<
"dst_roirows: "
<<
src_roirows
<<
endl
;
srcx
=
rng
.
uniform
(
0
,
src
.
cols
-
src_roicols
);
srcy
=
rng
.
uniform
(
0
,
src
.
rows
-
src_roirows
);
dstx
=
rng
.
uniform
(
0
,
dst
.
cols
-
dst_roicols
);
dsty
=
rng
.
uniform
(
0
,
dst
.
rows
-
dst_roirows
);
cout
<<
"srcx: "
<<
srcx
<<
"srcy: "
<<
srcy
<<
"dstx: "
<<
dstx
<<
"dsty: "
<<
dsty
<<
endl
;
map1_roicols
=
dst_roicols
;
map1_roirows
=
dst_roirows
;
map2_roicols
=
dst_roicols
;
...
...
@@ -940,10 +937,6 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
{
map1_roi
=
map1
(
Rect
(
map1x
,
map1y
,
map1_roicols
,
map1_roirows
));
gmap1_roi
=
map1_roi
;
// cv::Mat maptest(gmap1_roi);
// cout << "maptest " << endl;
//cout << maptest << endl;
//gmap1_roi = gmap1(Rect(map1x,map1y,map1_roicols,map1_roirows));
}
else
if
(
map1Type
==
CV_32FC1
&&
map2Type
==
CV_32FC1
)
...
...
@@ -962,6 +955,11 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
TEST_P
(
Remap
,
Mat
)
{
if
((
interpolation
==
1
&&
map1Type
==
CV_16SC2
)
||
(
interpolation
==
1
&&
map1Type
==
CV_16SC1
&&
map2Type
==
CV_16SC1
))
{
cout
<<
"LINEAR don't support the map1Type and map2Type"
<<
endl
;
return
;
}
int
bordertype
[]
=
{
cv
::
BORDER_CONSTANT
,
cv
::
BORDER_REPLICATE
/*,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101*/
};
const
char
*
borderstr
[]
=
{
"BORDER_CONSTANT"
,
"BORDER_REPLICATE"
/*, "BORDER_REFLECT","BORDER_WRAP","BORDER_REFLECT_101"*/
};
// for(int i = 0; i < sizeof(bordertype)/sizeof(int); i++)
...
...
@@ -1448,7 +1446,7 @@ INSTANTIATE_TEST_CASE_P(Imgproc, meanShiftProc, Combine(
));
INSTANTIATE_TEST_CASE_P
(
Imgproc
,
Remap
,
Combine
(
Values
(
CV_8UC1
,
CV_8UC
2
,
CV_8U
C4
),
Values
(
CV_8UC1
,
CV_8UC
4
,
CV_32FC1
,
CV_32F
C4
),
Values
(
CV_16SC2
,
CV_32FC2
),
NULL_TYPE
,
Values
((
int
)
cv
::
INTER_NEAREST
,
(
int
)
cv
::
INTER_LINEAR
),
Values
((
int
)
cv
::
BORDER_CONSTANT
)));
...
...
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