Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
4f99f69a
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,发现更多精彩内容 >>
提交
4f99f69a
编写于
7月 31, 2012
作者:
V
Vladislav Vinogradov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added gpu alpha premultiplication
上级
79d0dc25
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
107 addition
and
2 deletion
+107
-2
modules/gpu/src/color.cpp
modules/gpu/src/color.cpp
+80
-2
modules/gpu/test/test_color.cpp
modules/gpu/test/test_color.cpp
+27
-0
未找到文件。
modules/gpu/src/color.cpp
浏览文件 @
4f99f69a
...
...
@@ -1277,6 +1277,31 @@ namespace
luv_to_rgb
(
src
,
dst
,
-
1
,
stream
);
bgr_to_rgb
(
dst
,
dst
,
-
1
,
stream
);
}
void
rgba_to_mbgra
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
,
Stream
&
stream
)
{
#if (CUDA_VERSION < 5000)
(
void
)
src
;
(
void
)
dst
;
(
void
)
stream
;
CV_Error
(
CV_StsBadFlag
,
"Unknown/unsupported color conversion code"
);
#else
CV_Assert
(
src
.
type
()
==
CV_8UC4
||
src
.
type
()
==
CV_16UC4
);
dst
.
create
(
src
.
size
(),
src
.
type
());
NppStreamHandler
h
(
StreamAccessor
::
getStream
(
stream
));
NppiSize
oSizeROI
;
oSizeROI
.
width
=
src
.
cols
;
oSizeROI
.
height
=
src
.
rows
;
if
(
src
.
depth
()
==
CV_8U
)
nppSafeCall
(
nppiAlphaPremul_8u_AC4R
(
src
.
ptr
<
Npp8u
>
(),
static_cast
<
int
>
(
src
.
step
),
dst
.
ptr
<
Npp8u
>
(),
static_cast
<
int
>
(
dst
.
step
),
oSizeROI
)
);
else
nppSafeCall
(
nppiAlphaPremul_16u_AC4R
(
src
.
ptr
<
Npp16u
>
(),
static_cast
<
int
>
(
src
.
step
),
dst
.
ptr
<
Npp16u
>
(),
static_cast
<
int
>
(
dst
.
step
),
oSizeROI
)
);
#endif
}
}
void
cv
::
gpu
::
cvtColor
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
code
,
int
dcn
,
Stream
&
stream
)
...
...
@@ -1396,10 +1421,63 @@ void cv::gpu::cvtColor(const GpuMat& src, GpuMat& dst, int code, int dcn, Stream
0
,
// CV_BayerBG2GRAY = 86
0
,
// CV_BayerGB2GRAY = 87
0
,
// CV_BayerRG2GRAY = 88
0
// CV_BayerGR2GRAY = 89
0
,
// CV_BayerGR2GRAY = 89
//YUV 4:2:0 formats family
0
,
// COLOR_YUV2RGB_NV12 = 90,
0
,
// COLOR_YUV2BGR_NV12 = 91,
0
,
// COLOR_YUV2RGB_NV21 = 92,
0
,
// COLOR_YUV2BGR_NV21 = 93,
0
,
// COLOR_YUV2RGBA_NV12 = 94,
0
,
// COLOR_YUV2BGRA_NV12 = 95,
0
,
// COLOR_YUV2RGBA_NV21 = 96,
0
,
// COLOR_YUV2BGRA_NV21 = 97,
0
,
// COLOR_YUV2RGB_YV12 = 98,
0
,
// COLOR_YUV2BGR_YV12 = 99,
0
,
// COLOR_YUV2RGB_IYUV = 100,
0
,
// COLOR_YUV2BGR_IYUV = 101,
0
,
// COLOR_YUV2RGBA_YV12 = 102,
0
,
// COLOR_YUV2BGRA_YV12 = 103,
0
,
// COLOR_YUV2RGBA_IYUV = 104,
0
,
// COLOR_YUV2BGRA_IYUV = 105,
0
,
// COLOR_YUV2GRAY_420 = 106,
//YUV 4:2:2 formats family
0
,
// COLOR_YUV2RGB_UYVY = 107,
0
,
// COLOR_YUV2BGR_UYVY = 108,
0
,
// //COLOR_YUV2RGB_VYUY = 109,
0
,
// //COLOR_YUV2BGR_VYUY = 110,
0
,
// COLOR_YUV2RGBA_UYVY = 111,
0
,
// COLOR_YUV2BGRA_UYVY = 112,
0
,
// //COLOR_YUV2RGBA_VYUY = 113,
0
,
// //COLOR_YUV2BGRA_VYUY = 114,
0
,
// COLOR_YUV2RGB_YUY2 = 115,
0
,
// COLOR_YUV2BGR_YUY2 = 116,
0
,
// COLOR_YUV2RGB_YVYU = 117,
0
,
// COLOR_YUV2BGR_YVYU = 118,
0
,
// COLOR_YUV2RGBA_YUY2 = 119,
0
,
// COLOR_YUV2BGRA_YUY2 = 120,
0
,
// COLOR_YUV2RGBA_YVYU = 121,
0
,
// COLOR_YUV2BGRA_YVYU = 122,
0
,
// COLOR_YUV2GRAY_UYVY = 123,
0
,
// COLOR_YUV2GRAY_YUY2 = 124,
// alpha premultiplication
rgba_to_mbgra
,
// COLOR_RGBA2mRGBA = 125,
0
,
// COLOR_mRGBA2RGBA = 126,
0
,
// COLOR_COLORCVT_MAX = 127
};
CV_Assert
(
code
<
94
);
CV_Assert
(
code
<
128
);
func_t
func
=
funcs
[
code
];
...
...
modules/gpu/test/test_color.cpp
浏览文件 @
4f99f69a
...
...
@@ -1717,6 +1717,33 @@ TEST_P(CvtColor, RGB2Luv)
}
}
TEST_P
(
CvtColor
,
RGBA2mRGBA
)
{
if
(
depth
!=
CV_8U
)
return
;
try
{
cv
::
Mat
src
=
randomMat
(
size
,
CV_MAKE_TYPE
(
depth
,
4
));
cv
::
gpu
::
GpuMat
dst
=
createMat
(
src
.
size
(),
src
.
type
(),
useRoi
);
cv
::
gpu
::
cvtColor
(
loadMat
(
src
,
useRoi
),
dst
,
cv
::
COLOR_RGBA2mRGBA
);
cv
::
Mat
dst_gold
;
cv
::
cvtColor
(
src
,
dst_gold
,
cv
::
COLOR_RGBA2mRGBA
);
EXPECT_MAT_NEAR
(
dst_gold
,
dst
,
1
);
}
catch
(
const
cv
::
Exception
&
e
)
{
#if (CUDA_VERSION < 5000)
ASSERT_EQ
(
CV_StsBadFlag
,
e
.
code
);
#else
FAIL
();
#endif
}
}
INSTANTIATE_TEST_CASE_P
(
GPU_ImgProc
,
CvtColor
,
testing
::
Combine
(
ALL_DEVICES
,
DIFFERENT_SIZES
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录