Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
af367c4f
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,发现更多精彩内容 >>
提交
af367c4f
编写于
11月 27, 2013
作者:
I
Ilya Lavrenov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RGB[A] <-> BGR[A]
上级
ab9b883c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
58 addition
and
14 deletion
+58
-14
modules/imgproc/src/color.cpp
modules/imgproc/src/color.cpp
+11
-2
modules/imgproc/src/opencl/cvtcolor.cl
modules/imgproc/src/opencl/cvtcolor.cl
+35
-0
modules/imgproc/test/ocl/test_color.cpp
modules/imgproc/test/ocl/test_color.cpp
+12
-12
未找到文件。
modules/imgproc/src/color.cpp
浏览文件 @
af367c4f
...
...
@@ -2704,13 +2704,22 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
switch
(
code
)
{
/*
case COLOR_BGR2BGRA: case COLOR_RGB2BGRA: case COLOR_BGRA2BGR:
case COLOR_RGBA2BGR: case COLOR_RGB2BGR: case COLOR_BGRA2RGBA:
case COLOR_BGR2BGR565: case COLOR_BGR2BGR555: case COLOR_RGB2BGR565: case COLOR_RGB2BGR555:
case COLOR_BGRA2BGR565: case COLOR_BGRA2BGR555: case COLOR_RGBA2BGR565: case COLOR_RGBA2BGR555:
case COLOR_BGR5652BGR: case COLOR_BGR5552BGR: case COLOR_BGR5652RGB: case COLOR_BGR5552RGB:
case COLOR_BGR5652BGRA: case COLOR_BGR5552BGRA: case COLOR_BGR5652RGBA: case COLOR_BGR5552RGBA:
*/
case
COLOR_BGR2BGRA
:
case
COLOR_RGB2BGRA
:
case
COLOR_BGRA2BGR
:
case
COLOR_RGBA2BGR
:
case
COLOR_RGB2BGR
:
case
COLOR_BGRA2RGBA
:
{
CV_Assert
(
scn
==
3
||
scn
==
4
);
dcn
=
code
==
COLOR_BGR2BGRA
||
code
==
COLOR_RGB2BGRA
||
code
==
COLOR_BGRA2RGBA
?
4
:
3
;
bool
reverse
=
!
(
code
==
COLOR_BGR2BGRA
||
code
==
COLOR_BGRA2BGR
);
k
.
create
(
"RGB"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
format
(
"-D depth=%d -D scn=%d -D dcn=%d -D bidx=0 -D %s"
,
depth
,
scn
,
dcn
,
reverse
?
"REVERSE"
:
"ORDER"
));
break
;
}
case
COLOR_BGR2GRAY
:
case
COLOR_BGRA2GRAY
:
case
COLOR_RGB2GRAY
:
case
COLOR_RGBA2GRAY
:
{
...
...
modules/imgproc/src/opencl/cvtcolor.cl
浏览文件 @
af367c4f
...
...
@@ -417,7 +417,42 @@ __kernel void XYZ2RGB(__global const uchar * srcptr, int src_step, int src_offse
}
}
/////////////////////////////////////
RGB[A]
<->
BGR[A]
//////////////////////////////////////
__kernel
void
RGB
(
__global
const
uchar*
srcptr,
int
src_step,
int
src_offset,
__global
uchar*
dstptr,
int
dst_step,
int
dst_offset,
int
rows,
int
cols
)
{
int
x
=
get_global_id
(
0
)
;
int
y
=
get_global_id
(
1
)
;
if
(
y
<
rows
&&
x
<
cols
)
{
int
src_idx
=
mad24
(
y,
src_step,
src_offset
+
x
*
scnbytes
)
;
int
dst_idx
=
mad24
(
y,
dst_step,
dst_offset
+
x
*
dcnbytes
)
;
__global
const
DATA_TYPE
*
src
=
(
__global
const
DATA_TYPE
*
)(
srcptr
+
src_idx
)
;
__global
DATA_TYPE
*
dst
=
(
__global
DATA_TYPE
*
)(
dstptr
+
dst_idx
)
;
#
ifdef
REVERSE
dst[0]
=
src[2]
;
dst[1]
=
src[1]
;
dst[2]
=
src[0]
;
#
elif
defined
ORDER
dst[0]
=
src[0]
;
dst[1]
=
src[1]
;
dst[2]
=
src[2]
;
#
endif
#
if
dcn
==
4
#
if
scn
==
3
dst[3]
=
MAX_NUM
;
#
else
dst[3]
=
src[3]
;
#
endif
#
endif
}
}
...
...
modules/imgproc/test/ocl/test_color.cpp
浏览文件 @
af367c4f
...
...
@@ -109,18 +109,18 @@ PARAM_TEST_CASE(CvtColor, MatDepth, bool)
// RGB[A] <-> BGR[A]
//
OCL_TEST_P(CvtColor, BGR2BGRA) { performTest(3, 4, CVTCODE(BGR2BGRA)); }
//
OCL_TEST_P(CvtColor, RGB2RGBA) { performTest(3, 4, CVTCODE(RGB2RGBA)); }
//
OCL_TEST_P(CvtColor, BGRA2BGR) { performTest(4, 3, CVTCODE(BGRA2BGR)); }
//
OCL_TEST_P(CvtColor, RGBA2RGB) { performTest(4, 3, CVTCODE(RGBA2RGB)); }
//
OCL_TEST_P(CvtColor, BGR2RGBA) { performTest(3, 4, CVTCODE(BGR2RGBA)); }
//
OCL_TEST_P(CvtColor, RGB2BGRA) { performTest(3, 4, CVTCODE(RGB2BGRA)); }
//
OCL_TEST_P(CvtColor, RGBA2BGR) { performTest(4, 3, CVTCODE(RGBA2BGR)); }
//
OCL_TEST_P(CvtColor, BGRA2RGB) { performTest(4, 3, CVTCODE(BGRA2RGB)); }
//
OCL_TEST_P(CvtColor, BGR2RGB) { performTest(3, 3, CVTCODE(BGR2RGB)); }
//
OCL_TEST_P(CvtColor, RGB2BGR) { performTest(3, 3, CVTCODE(RGB2BGR)); }
//
OCL_TEST_P(CvtColor, BGRA2RGBA) { performTest(4, 4, CVTCODE(BGRA2RGBA)); }
//
OCL_TEST_P(CvtColor, RGBA2BGRA) { performTest(4, 4, CVTCODE(RGBA2BGRA)); }
OCL_TEST_P
(
CvtColor
,
BGR2BGRA
)
{
performTest
(
3
,
4
,
CVTCODE
(
BGR2BGRA
));
}
OCL_TEST_P
(
CvtColor
,
RGB2RGBA
)
{
performTest
(
3
,
4
,
CVTCODE
(
RGB2RGBA
));
}
OCL_TEST_P
(
CvtColor
,
BGRA2BGR
)
{
performTest
(
4
,
3
,
CVTCODE
(
BGRA2BGR
));
}
OCL_TEST_P
(
CvtColor
,
RGBA2RGB
)
{
performTest
(
4
,
3
,
CVTCODE
(
RGBA2RGB
));
}
OCL_TEST_P
(
CvtColor
,
BGR2RGBA
)
{
performTest
(
3
,
4
,
CVTCODE
(
BGR2RGBA
));
}
OCL_TEST_P
(
CvtColor
,
RGB2BGRA
)
{
performTest
(
3
,
4
,
CVTCODE
(
RGB2BGRA
));
}
OCL_TEST_P
(
CvtColor
,
RGBA2BGR
)
{
performTest
(
4
,
3
,
CVTCODE
(
RGBA2BGR
));
}
OCL_TEST_P
(
CvtColor
,
BGRA2RGB
)
{
performTest
(
4
,
3
,
CVTCODE
(
BGRA2RGB
));
}
OCL_TEST_P
(
CvtColor
,
BGR2RGB
)
{
performTest
(
3
,
3
,
CVTCODE
(
BGR2RGB
));
}
OCL_TEST_P
(
CvtColor
,
RGB2BGR
)
{
performTest
(
3
,
3
,
CVTCODE
(
RGB2BGR
));
}
OCL_TEST_P
(
CvtColor
,
BGRA2RGBA
)
{
performTest
(
4
,
4
,
CVTCODE
(
BGRA2RGBA
));
}
OCL_TEST_P
(
CvtColor
,
RGBA2BGRA
)
{
performTest
(
4
,
4
,
CVTCODE
(
RGBA2BGRA
));
}
// RGB <-> Gray
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录