Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
cf04fed3
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cf04fed3
编写于
7月 30, 2012
作者:
N
niko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix the compilation bugs
上级
c0a41054
变更
6
展开全部
显示空白变更内容
内联
并排
Showing
6 changed file
with
880 addition
and
434 deletion
+880
-434
cmake/OpenCVDetectOpenCL.cmake
cmake/OpenCVDetectOpenCL.cmake
+1
-1
modules/ocl/cl2cpp.py
modules/ocl/cl2cpp.py
+1
-1
modules/ocl/src/imgproc.cpp
modules/ocl/src/imgproc.cpp
+87
-10
modules/ocl/src/kernels/imgproc_remap.cl
modules/ocl/src/kernels/imgproc_remap.cl
+779
-408
modules/ocl/test/precomp.hpp
modules/ocl/test/precomp.hpp
+1
-1
modules/ocl/test/test_imgproc.cpp
modules/ocl/test/test_imgproc.cpp
+11
-13
未找到文件。
cmake/OpenCVDetectOpenCL.cmake
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
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
;
if
(
src
.
type
()
==
CV_8UC1
||
src
.
type
()
==
CV_8UC2
||
src
.
type
()
==
CV_8UC4
)
}
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
浏览文件 @
cf04fed3
此差异已折叠。
点击以展开。
modules/ocl/test/precomp.hpp
浏览文件 @
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
浏览文件 @
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
)));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录