Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
d2e13183
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,发现更多精彩内容 >>
提交
d2e13183
编写于
11月 27, 2013
作者:
I
Ilya Lavrenov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RGBA <-> mRGBA
上级
f771a0ba
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
54 addition
and
2 deletion
+54
-2
modules/imgproc/src/color.cpp
modules/imgproc/src/color.cpp
+9
-0
modules/imgproc/src/opencl/cvtcolor.cl
modules/imgproc/src/opencl/cvtcolor.cl
+43
-0
modules/imgproc/test/ocl/test_color.cpp
modules/imgproc/test/ocl/test_color.cpp
+2
-2
未找到文件。
modules/imgproc/src/color.cpp
浏览文件 @
d2e13183
...
...
@@ -3010,6 +3010,15 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
depth
,
dcn
,
bidx
,
hrange
,
6.
f
/
hrange
));
break
;
}
case
COLOR_RGBA2mRGBA
:
case
COLOR_mRGBA2RGBA
:
{
CV_Assert
(
scn
==
4
&&
depth
==
CV_8U
);
dcn
=
4
;
k
.
create
(
code
==
COLOR_RGBA2mRGBA
?
"RGBA2mRGBA"
:
"mRGBA2RGBA"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
format
(
"-D depth=%d -D dcn=4 -D scn=4 -D bidx=3"
,
depth
));
break
;
}
default:
;
}
...
...
modules/imgproc/src/opencl/cvtcolor.cl
浏览文件 @
d2e13183
...
...
@@ -988,12 +988,55 @@ __kernel void HLS2RGB(__global const uchar* srcptr, int src_step, int src_offset
#
endif
///////////////////////////
RGBA
<->
mRGBA
(
alpha
premultiplied
)
//////////////
#
ifdef
DEPTH_0
__kernel
void
RGBA2mRGBA
(
__global
const
uchar*
src,
int
src_step,
int
src_offset,
__global
uchar*
dst,
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
)
{
x
<<=
2
;
int
src_idx
=
mad24
(
y,
src_step,
src_offset
+
x
)
;
int
dst_idx
=
mad24
(
y,
dst_step,
dst_offset
+
x
)
;
uchar
v0
=
src[src_idx],
v1
=
src[src_idx
+
1]
;
uchar
v2
=
src[src_idx
+
2],
v3
=
src[src_idx
+
3]
;
dst[dst_idx]
=
(
v0
*
v3
+
HALF_MAX
)
/
MAX_NUM
;
dst[dst_idx
+
1]
=
(
v1
*
v3
+
HALF_MAX
)
/
MAX_NUM
;
dst[dst_idx
+
2]
=
(
v2
*
v3
+
HALF_MAX
)
/
MAX_NUM
;
dst[dst_idx
+
3]
=
v3
;
}
}
__kernel
void
mRGBA2RGBA
(
__global
const
uchar*
src,
int
src_step,
int
src_offset,
__global
uchar*
dst,
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
)
{
x
<<=
2
;
int
src_idx
=
mad24
(
y,
src_step,
src_offset
+
x
)
;
int
dst_idx
=
mad24
(
y,
dst_step,
dst_offset
+
x
)
;
uchar
v0
=
src[src_idx],
v1
=
src[src_idx
+
1]
;
uchar
v2
=
src[src_idx
+
2],
v3
=
src[src_idx
+
3]
;
uchar
v3_half
=
v3
/
2
;
dst[dst_idx]
=
v3
==
0
?
0
:
(
v0
*
MAX_NUM
+
v3_half
)
/
v3
;
dst[dst_idx
+
1]
=
v3
==
0
?
0
:
(
v1
*
MAX_NUM
+
v3_half
)
/
v3
;
dst[dst_idx
+
2]
=
v3
==
0
?
0
:
(
v2
*
MAX_NUM
+
v3_half
)
/
v3
;
dst[dst_idx
+
3]
=
v3
;
}
}
#
endif
modules/imgproc/test/ocl/test_color.cpp
浏览文件 @
d2e13183
...
...
@@ -247,8 +247,8 @@ OCL_TEST_P(CvtColor8u, GRAY2BGR555) { performTest(1, 2, CVTCODE(GRAY2BGR555)); }
// RGBA <-> mRGBA
//
OCL_TEST_P(CvtColor8u, RGBA2mRGBA) { performTest(4, 4, CVTCODE(RGBA2mRGBA)); }
//
OCL_TEST_P(CvtColor8u, mRGBA2RGBA) { performTest(4, 4, CVTCODE(mRGBA2RGBA)); }
OCL_TEST_P
(
CvtColor8u
,
RGBA2mRGBA
)
{
performTest
(
4
,
4
,
CVTCODE
(
RGBA2mRGBA
));
}
OCL_TEST_P
(
CvtColor8u
,
mRGBA2RGBA
)
{
performTest
(
4
,
4
,
CVTCODE
(
mRGBA2RGBA
));
}
// YUV -> RGBA_NV12
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录