Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
cae89a7a
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
cae89a7a
编写于
10月 29, 2014
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3318 from akarsakov:ocl_cvtcolor
上级
fd59551f
643c906f
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
493 addition
and
59 deletion
+493
-59
modules/imgproc/src/color.cpp
modules/imgproc/src/color.cpp
+98
-7
modules/imgproc/src/opencl/cvtcolor.cl
modules/imgproc/src/opencl/cvtcolor.cl
+294
-45
modules/imgproc/test/ocl/test_color.cpp
modules/imgproc/test/ocl/test_color.cpp
+101
-7
未找到文件。
modules/imgproc/src/color.cpp
浏览文件 @
cae89a7a
...
@@ -4848,7 +4848,7 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
...
@@ -4848,7 +4848,7 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
bool
ok
=
false
;
bool
ok
=
false
;
UMat
src
=
_src
.
getUMat
(),
dst
;
UMat
src
=
_src
.
getUMat
(),
dst
;
Size
sz
=
src
.
size
(),
dstSz
=
sz
;
Size
sz
=
src
.
size
(),
dstSz
=
sz
;
int
scn
=
src
.
channels
(),
depth
=
src
.
depth
(),
bidx
;
int
scn
=
src
.
channels
(),
depth
=
src
.
depth
(),
bidx
,
uidx
,
yidx
;
int
dims
=
2
,
stripeSize
=
1
;
int
dims
=
2
,
stripeSize
=
1
;
ocl
::
Kernel
k
;
ocl
::
Kernel
k
;
...
@@ -4857,6 +4857,7 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
...
@@ -4857,6 +4857,7 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
ocl
::
Device
dev
=
ocl
::
Device
::
getDefault
();
ocl
::
Device
dev
=
ocl
::
Device
::
getDefault
();
int
pxPerWIy
=
dev
.
isIntel
()
&&
(
dev
.
type
()
&
ocl
::
Device
::
TYPE_GPU
)
?
4
:
1
;
int
pxPerWIy
=
dev
.
isIntel
()
&&
(
dev
.
type
()
&
ocl
::
Device
::
TYPE_GPU
)
?
4
:
1
;
int
pxPerWIx
=
1
;
size_t
globalsize
[]
=
{
src
.
cols
,
(
src
.
rows
+
pxPerWIy
-
1
)
/
pxPerWIy
};
size_t
globalsize
[]
=
{
src
.
cols
,
(
src
.
rows
+
pxPerWIy
-
1
)
/
pxPerWIy
};
cv
::
String
opts
=
format
(
"-D depth=%d -D scn=%d -D PIX_PER_WI_Y=%d "
,
cv
::
String
opts
=
format
(
"-D depth=%d -D scn=%d -D PIX_PER_WI_Y=%d "
,
...
@@ -4960,17 +4961,107 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
...
@@ -4960,17 +4961,107 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
opts
+
format
(
"-D dcn=%d -D bidx=%d"
,
dcn
,
bidx
));
opts
+
format
(
"-D dcn=%d -D bidx=%d"
,
dcn
,
bidx
));
break
;
break
;
}
}
case
COLOR_YUV2RGB_NV12
:
case
COLOR_YUV2BGR_NV12
:
case
COLOR_YUV2RGB_NV12
:
case
COLOR_YUV2BGR_NV12
:
case
COLOR_YUV2RGB_NV21
:
case
COLOR_YUV2BGR_NV21
:
case
COLOR_YUV2RGBA_NV12
:
case
COLOR_YUV2BGRA_NV12
:
case
COLOR_YUV2RGBA_NV12
:
case
COLOR_YUV2BGRA_NV12
:
case
COLOR_YUV2RGBA_NV21
:
case
COLOR_YUV2BGRA_NV21
:
{
{
CV_Assert
(
scn
==
1
);
CV_Assert
(
scn
==
1
);
CV_Assert
(
sz
.
width
%
2
==
0
&&
sz
.
height
%
3
==
0
&&
depth
==
CV_8U
);
CV_Assert
(
sz
.
width
%
2
==
0
&&
sz
.
height
%
3
==
0
&&
depth
==
CV_8U
);
dcn
=
code
==
COLOR_YUV2BGRA_NV12
||
code
==
COLOR_YUV2RGBA_NV12
?
4
:
3
;
dcn
=
code
==
COLOR_YUV2BGRA_NV12
||
code
==
COLOR_YUV2RGBA_NV12
||
bidx
=
code
==
COLOR_YUV2BGRA_NV12
||
code
==
COLOR_YUV2BGR_NV12
?
0
:
2
;
code
==
COLOR_YUV2BGRA_NV21
||
code
==
COLOR_YUV2RGBA_NV21
?
4
:
3
;
bidx
=
code
==
COLOR_YUV2BGRA_NV12
||
code
==
COLOR_YUV2BGR_NV12
||
code
==
COLOR_YUV2BGRA_NV21
||
code
==
COLOR_YUV2BGR_NV21
?
0
:
2
;
uidx
=
code
==
COLOR_YUV2RGBA_NV21
||
code
==
COLOR_YUV2RGB_NV21
||
code
==
COLOR_YUV2BGRA_NV21
||
code
==
COLOR_YUV2BGR_NV21
?
1
:
0
;
dstSz
=
Size
(
sz
.
width
,
sz
.
height
*
2
/
3
);
dstSz
=
Size
(
sz
.
width
,
sz
.
height
*
2
/
3
);
k
.
create
(
"YUV2RGB_NV12"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
globalsize
[
0
]
=
dstSz
.
width
/
2
;
globalsize
[
1
]
=
(
dstSz
.
height
/
2
+
pxPerWIy
-
1
)
/
pxPerWIy
;
opts
+
format
(
"-D dcn=%d -D bidx=%d"
,
dcn
,
bidx
));
k
.
create
(
"YUV2RGB_NVx"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
opts
+
format
(
"-D dcn=%d -D bidx=%d -D uidx=%d"
,
dcn
,
bidx
,
uidx
));
break
;
}
case
COLOR_YUV2BGR_YV12
:
case
COLOR_YUV2RGB_YV12
:
case
COLOR_YUV2BGRA_YV12
:
case
COLOR_YUV2RGBA_YV12
:
case
COLOR_YUV2BGR_IYUV
:
case
COLOR_YUV2RGB_IYUV
:
case
COLOR_YUV2BGRA_IYUV
:
case
COLOR_YUV2RGBA_IYUV
:
{
CV_Assert
(
scn
==
1
);
CV_Assert
(
sz
.
width
%
2
==
0
&&
sz
.
height
%
3
==
0
&&
depth
==
CV_8U
);
dcn
=
code
==
COLOR_YUV2BGRA_YV12
||
code
==
COLOR_YUV2RGBA_YV12
||
code
==
COLOR_YUV2BGRA_IYUV
||
code
==
COLOR_YUV2RGBA_IYUV
?
4
:
3
;
bidx
=
code
==
COLOR_YUV2BGRA_YV12
||
code
==
COLOR_YUV2BGR_YV12
||
code
==
COLOR_YUV2BGRA_IYUV
||
code
==
COLOR_YUV2BGR_IYUV
?
0
:
2
;
uidx
=
code
==
COLOR_YUV2BGRA_YV12
||
code
==
COLOR_YUV2BGR_YV12
||
code
==
COLOR_YUV2RGBA_YV12
||
code
==
COLOR_YUV2RGB_YV12
?
1
:
0
;
dstSz
=
Size
(
sz
.
width
,
sz
.
height
*
2
/
3
);
globalsize
[
0
]
=
dstSz
.
width
/
2
;
globalsize
[
1
]
=
(
dstSz
.
height
/
2
+
pxPerWIy
-
1
)
/
pxPerWIy
;
k
.
create
(
"YUV2RGB_YV12_IYUV"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
opts
+
format
(
"-D dcn=%d -D bidx=%d -D uidx=%d%s"
,
dcn
,
bidx
,
uidx
,
src
.
isContinuous
()
?
" -D SRC_CONT"
:
""
));
break
;
}
case
COLOR_YUV2GRAY_420
:
{
if
(
dcn
<=
0
)
dcn
=
1
;
CV_Assert
(
dcn
==
1
);
CV_Assert
(
sz
.
width
%
2
==
0
&&
sz
.
height
%
3
==
0
&&
depth
==
CV_8U
);
dstSz
=
Size
(
sz
.
width
,
sz
.
height
*
2
/
3
);
_dst
.
create
(
dstSz
,
CV_MAKETYPE
(
depth
,
dcn
));
dst
=
_dst
.
getUMat
();
src
.
rowRange
(
0
,
dstSz
.
height
).
copyTo
(
dst
);
return
true
;
}
case
COLOR_RGB2YUV_YV12
:
case
COLOR_BGR2YUV_YV12
:
case
COLOR_RGBA2YUV_YV12
:
case
COLOR_BGRA2YUV_YV12
:
case
COLOR_RGB2YUV_IYUV
:
case
COLOR_BGR2YUV_IYUV
:
case
COLOR_RGBA2YUV_IYUV
:
case
COLOR_BGRA2YUV_IYUV
:
{
if
(
dcn
<=
0
)
dcn
=
1
;
bidx
=
code
==
COLOR_BGRA2YUV_YV12
||
code
==
COLOR_BGR2YUV_YV12
||
code
==
COLOR_BGRA2YUV_IYUV
||
code
==
COLOR_BGR2YUV_IYUV
?
0
:
2
;
uidx
=
code
==
COLOR_RGBA2YUV_YV12
||
code
==
COLOR_RGB2YUV_YV12
||
code
==
COLOR_BGRA2YUV_YV12
||
code
==
COLOR_BGR2YUV_YV12
?
1
:
0
;
CV_Assert
(
(
scn
==
3
||
scn
==
4
)
&&
depth
==
CV_8U
);
CV_Assert
(
dcn
==
1
);
CV_Assert
(
sz
.
width
%
2
==
0
&&
sz
.
height
%
2
==
0
);
dstSz
=
Size
(
sz
.
width
,
sz
.
height
/
2
*
3
);
_dst
.
create
(
dstSz
,
CV_MAKETYPE
(
depth
,
dcn
));
dst
=
_dst
.
getUMat
();
if
(
dev
.
isIntel
()
&&
src
.
cols
%
4
==
0
&&
src
.
step
%
4
==
0
&&
src
.
offset
%
4
==
0
&&
dst
.
step
%
4
==
0
&&
dst
.
offset
%
4
==
0
)
{
pxPerWIx
=
2
;
}
globalsize
[
0
]
=
dstSz
.
width
/
(
2
*
pxPerWIx
);
globalsize
[
1
]
=
(
dstSz
.
height
/
3
+
pxPerWIy
-
1
)
/
pxPerWIy
;
k
.
create
(
"RGB2YUV_YV12_IYUV"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
opts
+
format
(
"-D dcn=%d -D bidx=%d -D uidx=%d -D PIX_PER_WI_X=%d"
,
dcn
,
bidx
,
uidx
,
pxPerWIx
));
k
.
args
(
ocl
::
KernelArg
::
ReadOnlyNoSize
(
src
),
ocl
::
KernelArg
::
WriteOnly
(
dst
));
return
k
.
run
(
2
,
globalsize
,
NULL
,
false
);
}
case
COLOR_YUV2RGB_UYVY
:
case
COLOR_YUV2BGR_UYVY
:
case
COLOR_YUV2RGBA_UYVY
:
case
COLOR_YUV2BGRA_UYVY
:
case
COLOR_YUV2RGB_YUY2
:
case
COLOR_YUV2BGR_YUY2
:
case
COLOR_YUV2RGB_YVYU
:
case
COLOR_YUV2BGR_YVYU
:
case
COLOR_YUV2RGBA_YUY2
:
case
COLOR_YUV2BGRA_YUY2
:
case
COLOR_YUV2RGBA_YVYU
:
case
COLOR_YUV2BGRA_YVYU
:
{
if
(
dcn
<=
0
)
dcn
=
(
code
==
COLOR_YUV2RGBA_UYVY
||
code
==
COLOR_YUV2BGRA_UYVY
||
code
==
COLOR_YUV2RGBA_YUY2
||
code
==
COLOR_YUV2BGRA_YUY2
||
code
==
COLOR_YUV2RGBA_YVYU
||
code
==
COLOR_YUV2BGRA_YVYU
)
?
4
:
3
;
bidx
=
(
code
==
COLOR_YUV2BGR_UYVY
||
code
==
COLOR_YUV2BGRA_UYVY
||
code
==
COLOR_YUV2BGRA_YUY2
||
code
==
COLOR_YUV2BGR_YUY2
||
code
==
COLOR_YUV2BGRA_YVYU
||
code
==
COLOR_YUV2BGR_YVYU
)
?
0
:
2
;
yidx
=
(
code
==
COLOR_YUV2RGB_UYVY
||
code
==
COLOR_YUV2RGBA_UYVY
||
code
==
COLOR_YUV2BGR_UYVY
||
code
==
COLOR_YUV2BGRA_UYVY
)
?
1
:
0
;
uidx
=
(
code
==
COLOR_YUV2RGB_YVYU
||
code
==
COLOR_YUV2RGBA_YVYU
||
code
==
COLOR_YUV2BGR_YVYU
||
code
==
COLOR_YUV2BGRA_YVYU
)
?
2
:
0
;
uidx
=
1
-
yidx
+
uidx
;
CV_Assert
(
dcn
==
3
||
dcn
==
4
);
CV_Assert
(
scn
==
2
&&
depth
==
CV_8U
);
k
.
create
(
"YUV2RGB_422"
,
ocl
::
imgproc
::
cvtcolor_oclsrc
,
opts
+
format
(
"-D dcn=%d -D bidx=%d -D uidx=%d -D yidx=%d%s"
,
dcn
,
bidx
,
uidx
,
yidx
,
src
.
offset
%
4
==
0
&&
src
.
step
%
4
==
0
?
" -D USE_OPTIMIZED_LOAD"
:
""
));
break
;
break
;
}
}
case
COLOR_BGR2YCrCb
:
case
COLOR_BGR2YCrCb
:
...
...
modules/imgproc/src/opencl/cvtcolor.cl
浏览文件 @
cae89a7a
此差异已折叠。
点击以展开。
modules/imgproc/test/ocl/test_color.cpp
浏览文件 @
cae89a7a
...
@@ -320,9 +320,9 @@ OCL_TEST_P(CvtColor8u32f, Luv2RGBA) { performTest(3, 4, CVTCODE(Luv2RGB), depth
...
@@ -320,9 +320,9 @@ OCL_TEST_P(CvtColor8u32f, Luv2RGBA) { performTest(3, 4, CVTCODE(Luv2RGB), depth
OCL_TEST_P
(
CvtColor8u32f
,
Luv2LBGRA
)
{
performTest
(
3
,
4
,
CVTCODE
(
Luv2LBGR
),
depth
==
CV_8U
?
1
:
1e-5
);
}
OCL_TEST_P
(
CvtColor8u32f
,
Luv2LBGRA
)
{
performTest
(
3
,
4
,
CVTCODE
(
Luv2LBGR
),
depth
==
CV_8U
?
1
:
1e-5
);
}
OCL_TEST_P
(
CvtColor8u32f
,
Luv2LRGBA
)
{
performTest
(
3
,
4
,
CVTCODE
(
Luv2LRGB
),
depth
==
CV_8U
?
1
:
1e-5
);
}
OCL_TEST_P
(
CvtColor8u32f
,
Luv2LRGBA
)
{
performTest
(
3
,
4
,
CVTCODE
(
Luv2LRGB
),
depth
==
CV_8U
?
1
:
1e-5
);
}
// YUV
-> RGBA_NV12
// YUV
420 -> RGBA
struct
CvtColor_YUV420
:
struct
CvtColor_YUV
2RGB_
420
:
public
CvtColor
public
CvtColor
{
{
void
generateTestData
(
int
channelsIn
,
int
channelsOut
)
void
generateTestData
(
int
channelsIn
,
int
channelsOut
)
...
@@ -344,10 +344,94 @@ struct CvtColor_YUV420 :
...
@@ -344,10 +344,94 @@ struct CvtColor_YUV420 :
}
}
};
};
OCL_TEST_P
(
CvtColor_YUV420
,
YUV2RGBA_NV12
)
{
performTest
(
1
,
4
,
COLOR_YUV2RGBA_NV12
);
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGBA_NV12
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2RGBA_NV12
));
}
OCL_TEST_P
(
CvtColor_YUV420
,
YUV2BGRA_NV12
)
{
performTest
(
1
,
4
,
COLOR_YUV2BGRA_NV12
);
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGRA_NV12
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2BGRA_NV12
));
}
OCL_TEST_P
(
CvtColor_YUV420
,
YUV2RGB_NV12
)
{
performTest
(
1
,
3
,
COLOR_YUV2RGB_NV12
);
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGB_NV12
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2RGB_NV12
));
}
OCL_TEST_P
(
CvtColor_YUV420
,
YUV2BGR_NV12
)
{
performTest
(
1
,
3
,
COLOR_YUV2BGR_NV12
);
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGR_NV12
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2BGR_NV12
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGBA_NV21
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2RGBA_NV21
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGRA_NV21
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2BGRA_NV21
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGB_NV21
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2RGB_NV21
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGR_NV21
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2BGR_NV21
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGBA_YV12
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2RGBA_YV12
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGRA_YV12
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2BGRA_YV12
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGB_YV12
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2RGB_YV12
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGR_YV12
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2BGR_YV12
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGBA_IYUV
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2RGBA_IYUV
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGRA_IYUV
)
{
performTest
(
1
,
4
,
CVTCODE
(
YUV2BGRA_IYUV
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2RGB_IYUV
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2RGB_IYUV
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2BGR_IYUV
)
{
performTest
(
1
,
3
,
CVTCODE
(
YUV2BGR_IYUV
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_420
,
YUV2GRAY_420
)
{
performTest
(
1
,
1
,
CVTCODE
(
YUV2GRAY_420
));
}
// RGBA -> YUV420
struct
CvtColor_RGB2YUV_420
:
public
CvtColor
{
void
generateTestData
(
int
channelsIn
,
int
channelsOut
)
{
const
int
srcType
=
CV_MAKE_TYPE
(
depth
,
channelsIn
);
const
int
dstType
=
CV_MAKE_TYPE
(
depth
,
channelsOut
);
Size
srcRoiSize
=
randomSize
(
1
,
MAX_VALUE
);
srcRoiSize
.
width
*=
2
;
srcRoiSize
.
height
*=
2
;
Border
srcBorder
=
randomBorder
(
0
,
use_roi
?
MAX_VALUE
:
0
);
randomSubMat
(
src
,
src_roi
,
srcRoiSize
,
srcBorder
,
srcType
,
2
,
100
);
Size
dstRoiSize
(
srcRoiSize
.
width
,
srcRoiSize
.
height
/
2
*
3
);
Border
dstBorder
=
randomBorder
(
0
,
use_roi
?
MAX_VALUE
:
0
);
randomSubMat
(
dst
,
dst_roi
,
dstRoiSize
,
dstBorder
,
dstType
,
5
,
16
);
UMAT_UPLOAD_INPUT_PARAMETER
(
src
);
UMAT_UPLOAD_OUTPUT_PARAMETER
(
dst
);
}
};
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
RGBA2YUV_YV12
)
{
performTest
(
4
,
1
,
CVTCODE
(
RGBA2YUV_YV12
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
BGRA2YUV_YV12
)
{
performTest
(
4
,
1
,
CVTCODE
(
BGRA2YUV_YV12
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
RGB2YUV_YV12
)
{
performTest
(
3
,
1
,
CVTCODE
(
RGB2YUV_YV12
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
BGR2YUV_YV12
)
{
performTest
(
3
,
1
,
CVTCODE
(
BGR2YUV_YV12
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
RGBA2YUV_IYUV
)
{
performTest
(
4
,
1
,
CVTCODE
(
RGBA2YUV_IYUV
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
BGRA2YUV_IYUV
)
{
performTest
(
4
,
1
,
CVTCODE
(
BGRA2YUV_IYUV
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
RGB2YUV_IYUV
)
{
performTest
(
3
,
1
,
CVTCODE
(
RGB2YUV_IYUV
),
1
);
}
OCL_TEST_P
(
CvtColor_RGB2YUV_420
,
BGR2YUV_IYUV
)
{
performTest
(
3
,
1
,
CVTCODE
(
BGR2YUV_IYUV
),
1
);
}
// YUV422 -> RGBA
struct
CvtColor_YUV2RGB_422
:
public
CvtColor
{
void
generateTestData
(
int
channelsIn
,
int
channelsOut
)
{
const
int
srcType
=
CV_MAKE_TYPE
(
depth
,
channelsIn
);
const
int
dstType
=
CV_MAKE_TYPE
(
depth
,
channelsOut
);
Size
roiSize
=
randomSize
(
1
,
MAX_VALUE
);
roiSize
.
width
*=
2
;
Border
srcBorder
=
randomBorder
(
0
,
use_roi
?
MAX_VALUE
:
0
);
randomSubMat
(
src
,
src_roi
,
roiSize
,
srcBorder
,
srcType
,
2
,
100
);
Border
dstBorder
=
randomBorder
(
0
,
use_roi
?
MAX_VALUE
:
0
);
randomSubMat
(
dst
,
dst_roi
,
roiSize
,
dstBorder
,
dstType
,
5
,
16
);
UMAT_UPLOAD_INPUT_PARAMETER
(
src
);
UMAT_UPLOAD_OUTPUT_PARAMETER
(
dst
);
}
};
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2RGB_UYVY
)
{
performTest
(
2
,
3
,
CVTCODE
(
YUV2RGB_UYVY
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2BGR_UYVY
)
{
performTest
(
2
,
3
,
CVTCODE
(
YUV2BGR_UYVY
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2RGBA_UYVY
)
{
performTest
(
2
,
4
,
CVTCODE
(
YUV2RGBA_UYVY
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2BGRA_UYVY
)
{
performTest
(
2
,
4
,
CVTCODE
(
YUV2BGRA_UYVY
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2RGB_YUY2
)
{
performTest
(
2
,
3
,
CVTCODE
(
YUV2RGB_YUY2
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2BGR_YUY2
)
{
performTest
(
2
,
3
,
CVTCODE
(
YUV2BGR_YUY2
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2RGBA_YUY2
)
{
performTest
(
2
,
4
,
CVTCODE
(
YUV2RGBA_YUY2
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2BGRA_YUY2
)
{
performTest
(
2
,
4
,
CVTCODE
(
YUV2BGRA_YUY2
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2RGB_YVYU
)
{
performTest
(
2
,
3
,
CVTCODE
(
YUV2RGB_YVYU
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2BGR_YVYU
)
{
performTest
(
2
,
3
,
CVTCODE
(
YUV2BGR_YVYU
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2RGBA_YVYU
)
{
performTest
(
2
,
4
,
CVTCODE
(
YUV2RGBA_YVYU
));
}
OCL_TEST_P
(
CvtColor_YUV2RGB_422
,
YUV2BGRA_YVYU
)
{
performTest
(
2
,
4
,
CVTCODE
(
YUV2BGRA_YVYU
));
}
OCL_INSTANTIATE_TEST_CASE_P
(
ImgProc
,
CvtColor8u
,
OCL_INSTANTIATE_TEST_CASE_P
(
ImgProc
,
CvtColor8u
,
...
@@ -361,7 +445,17 @@ OCL_INSTANTIATE_TEST_CASE_P(ImgProc, CvtColor,
...
@@ -361,7 +445,17 @@ OCL_INSTANTIATE_TEST_CASE_P(ImgProc, CvtColor,
testing
::
Values
(
MatDepth
(
CV_8U
),
MatDepth
(
CV_16U
),
MatDepth
(
CV_32F
)),
testing
::
Values
(
MatDepth
(
CV_8U
),
MatDepth
(
CV_16U
),
MatDepth
(
CV_32F
)),
Bool
()));
Bool
()));
OCL_INSTANTIATE_TEST_CASE_P
(
ImgProc
,
CvtColor_YUV420
,
OCL_INSTANTIATE_TEST_CASE_P
(
ImgProc
,
CvtColor_YUV2RGB_420
,
testing
::
Combine
(
testing
::
Values
(
MatDepth
(
CV_8U
)),
Bool
()));
OCL_INSTANTIATE_TEST_CASE_P
(
ImgProc
,
CvtColor_RGB2YUV_420
,
testing
::
Combine
(
testing
::
Values
(
MatDepth
(
CV_8U
)),
Bool
()));
OCL_INSTANTIATE_TEST_CASE_P
(
ImgProc
,
CvtColor_YUV2RGB_422
,
testing
::
Combine
(
testing
::
Combine
(
testing
::
Values
(
MatDepth
(
CV_8U
)),
testing
::
Values
(
MatDepth
(
CV_8U
)),
Bool
()));
Bool
()));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录