Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
b24fc695
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,发现更多精彩内容 >>
提交
b24fc695
编写于
8月 15, 2018
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core(perf): fix addScalar test
keep the same type for passed Scalar values
上级
b996b618
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
160 addition
and
41 deletion
+160
-41
modules/core/perf/perf_arithm.cpp
modules/core/perf/perf_arithm.cpp
+160
-41
未找到文件。
modules/core/perf/perf_arithm.cpp
浏览文件 @
b24fc695
...
...
@@ -4,11 +4,9 @@ namespace opencv_test
{
using
namespace
perf
;
#define TYPICAL_MAT_SIZES_CORE_ARITHM szVGA, sz720p, sz1080p
#define TYPICAL_MAT_TYPES_CORE_ARITHM CV_8UC1, CV_8SC1, CV_16SC1, CV_16SC2, CV_16SC3, CV_16SC4, CV_8UC4, CV_32SC1, CV_32FC1
#define TYPICAL_MATS_CORE_ARITHM testing::Combine( testing::Values( TYPICAL_MAT_SIZES_CORE_ARITHM ), testing::Values( TYPICAL_MAT_TYPES_CORE_ARITHM ) )
typedef
Size_MatType
BinaryOpTest
;
PERF_TEST_P
(
Size_MatType
,
min
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
min
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -20,10 +18,25 @@ PERF_TEST_P(Size_MatType, min, TYPICAL_MATS_CORE_ARITHM)
TEST_CYCLE
()
cv
::
min
(
a
,
b
,
c
);
SANITY_CHECK
(
c
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P_
(
BinaryOpTest
,
minScalarDouble
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
cv
::
Mat
a
=
Mat
(
sz
,
type
);
cv
::
Scalar
b
;
cv
::
Mat
c
=
Mat
(
sz
,
type
);
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
TEST_CYCLE
()
cv
::
min
(
a
,
b
,
c
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P
(
Size_MatType
,
minScalar
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
minScalarSameType
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -33,12 +46,21 @@ PERF_TEST_P(Size_MatType, minScalar, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
if
(
CV_MAT_DEPTH
(
type
)
<
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
3
,
4
);
// don't pass non-integer values for 8U/8S/16U/16S processing
}
else
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
-
3
,
4
);
// don't pass non-integer values for 32S processing
}
TEST_CYCLE
()
cv
::
min
(
a
,
b
,
c
);
SANITY_CHECK
(
c
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
max
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
max
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -50,10 +72,25 @@ PERF_TEST_P(Size_MatType, max, TYPICAL_MATS_CORE_ARITHM)
TEST_CYCLE
()
cv
::
max
(
a
,
b
,
c
);
SANITY_CHECK
(
c
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P_
(
BinaryOpTest
,
maxScalarDouble
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
cv
::
Mat
a
=
Mat
(
sz
,
type
);
cv
::
Scalar
b
;
cv
::
Mat
c
=
Mat
(
sz
,
type
);
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
TEST_CYCLE
()
cv
::
max
(
a
,
b
,
c
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P
(
Size_MatType
,
maxScalar
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
maxScalarSameType
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -63,12 +100,21 @@ PERF_TEST_P(Size_MatType, maxScalar, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
if
(
CV_MAT_DEPTH
(
type
)
<
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
3
,
4
);
// don't pass non-integer values for 8U/8S/16U/16S processing
}
else
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
-
3
,
4
);
// don't pass non-integer values for 32S processing
}
TEST_CYCLE
()
cv
::
max
(
a
,
b
,
c
);
SANITY_CHECK
(
c
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
absdiff
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
absdiff
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -78,21 +124,19 @@ PERF_TEST_P(Size_MatType, absdiff, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
double
eps
=
1e-8
;
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: absdiff can be without saturation on 32S
a
/=
2
;
b
/=
2
;
eps
=
1
;
}
TEST_CYCLE
()
cv
::
absdiff
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
eps
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
absdiffScalar
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
absdiffScalarDouble
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -102,21 +146,45 @@ PERF_TEST_P(Size_MatType, absdiffScalar, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
double
eps
=
1e-8
;
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: absdiff can be without saturation on 32S
a
/=
2
;
b
/=
2
;
eps
=
1
;
}
TEST_CYCLE
()
cv
::
absdiff
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
eps
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P_
(
BinaryOpTest
,
absdiffScalarSameType
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
cv
::
Mat
a
=
Mat
(
sz
,
type
);
cv
::
Scalar
b
;
cv
::
Mat
c
=
Mat
(
sz
,
type
);
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
if
(
CV_MAT_DEPTH
(
type
)
<
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
3
,
4
);
// don't pass non-integer values for 8U/8S/16U/16S processing
}
else
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: absdiff can be without saturation on 32S
a
/=
2
;
b
=
Scalar
(
1
,
0
,
-
3
,
4
);
// don't pass non-integer values for 32S processing
}
TEST_CYCLE
()
cv
::
absdiff
(
a
,
b
,
c
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P
(
Size_MatType
,
add
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
add
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -127,21 +195,19 @@ PERF_TEST_P(Size_MatType, add, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
declare
.
time
(
50
);
double
eps
=
1e-8
;
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: add can be without saturation on 32S
a
/=
2
;
b
/=
2
;
eps
=
1
;
}
TEST_CYCLE
()
cv
::
add
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
eps
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
addScalar
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
addScalarDouble
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -151,21 +217,45 @@ PERF_TEST_P(Size_MatType, addScalar, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
double
eps
=
1e-8
;
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: add can be without saturation on 32S
a
/=
2
;
b
/=
2
;
eps
=
1
;
}
TEST_CYCLE
()
cv
::
add
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
eps
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P_
(
BinaryOpTest
,
addScalarSameType
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
cv
::
Mat
a
=
Mat
(
sz
,
type
);
cv
::
Scalar
b
;
cv
::
Mat
c
=
Mat
(
sz
,
type
);
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
if
(
CV_MAT_DEPTH
(
type
)
<
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
3
,
4
);
// don't pass non-integer values for 8U/8S/16U/16S processing
}
else
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: add can be without saturation on 32S
a
/=
2
;
b
=
Scalar
(
1
,
0
,
-
3
,
4
);
// don't pass non-integer values for 32S processing
}
TEST_CYCLE
()
cv
::
add
(
a
,
b
,
c
,
noArray
(),
type
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P
(
Size_MatType
,
subtract
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
subtract
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -175,21 +265,19 @@ PERF_TEST_P(Size_MatType, subtract, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
double
eps
=
1e-8
;
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: subtract can be without saturation on 32S
a
/=
2
;
b
/=
2
;
eps
=
1
;
}
TEST_CYCLE
()
cv
::
subtract
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
eps
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
subtractScalar
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
subtractScalarDouble
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -199,21 +287,45 @@ PERF_TEST_P(Size_MatType, subtractScalar, TYPICAL_MATS_CORE_ARITHM)
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
double
eps
=
1e-8
;
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: subtract can be without saturation on 32S
a
/=
2
;
b
/=
2
;
eps
=
1
;
}
TEST_CYCLE
()
cv
::
subtract
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
eps
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P_
(
BinaryOpTest
,
subtractScalarSameType
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
cv
::
Mat
a
=
Mat
(
sz
,
type
);
cv
::
Scalar
b
;
cv
::
Mat
c
=
Mat
(
sz
,
type
);
declare
.
in
(
a
,
b
,
WARMUP_RNG
).
out
(
c
);
if
(
CV_MAT_DEPTH
(
type
)
<
CV_32S
)
{
b
=
Scalar
(
1
,
0
,
3
,
4
);
// don't pass non-integer values for 8U/8S/16U/16S processing
}
else
if
(
CV_MAT_DEPTH
(
type
)
==
CV_32S
)
{
//see ticket 1529: subtract can be without saturation on 32S
a
/=
2
;
b
=
Scalar
(
1
,
0
,
-
3
,
4
);
// don't pass non-integer values for 32S processing
}
TEST_CYCLE
()
cv
::
subtract
(
a
,
b
,
c
,
noArray
(),
type
);
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P
(
Size_MatType
,
multiply
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
multiply
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -229,10 +341,10 @@ PERF_TEST_P(Size_MatType, multiply, TYPICAL_MATS_CORE_ARITHM)
TEST_CYCLE
()
cv
::
multiply
(
a
,
b
,
c
);
SANITY_CHECK
(
c
,
1e-8
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
multiplyScale
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
multiplyScale
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -250,10 +362,10 @@ PERF_TEST_P(Size_MatType, multiplyScale, TYPICAL_MATS_CORE_ARITHM)
TEST_CYCLE
()
cv
::
multiply
(
a
,
b
,
c
,
scale
);
SANITY_CHECK
(
c
,
1e-8
);
SANITY_CHECK
_NOTHING
(
);
}
PERF_TEST_P
(
Size_MatType
,
divide
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
divide
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -267,7 +379,7 @@ PERF_TEST_P(Size_MatType, divide, TYPICAL_MATS_CORE_ARITHM)
SANITY_CHECK_NOTHING
();
}
PERF_TEST_P
(
Size_MatType
,
reciprocal
,
TYPICAL_MATS_CORE_ARITHM
)
PERF_TEST_P
_
(
BinaryOpTest
,
reciprocal
)
{
Size
sz
=
get
<
0
>
(
GetParam
());
int
type
=
get
<
1
>
(
GetParam
());
...
...
@@ -281,4 +393,11 @@ PERF_TEST_P(Size_MatType, reciprocal, TYPICAL_MATS_CORE_ARITHM)
SANITY_CHECK_NOTHING
();
}
INSTANTIATE_TEST_CASE_P
(
/*nothing*/
,
BinaryOpTest
,
testing
::
Combine
(
testing
::
Values
(
szVGA
,
sz720p
,
sz1080p
),
testing
::
Values
(
CV_8UC1
,
CV_8UC3
,
CV_8UC4
,
CV_8SC1
,
CV_16SC1
,
CV_16SC2
,
CV_16SC3
,
CV_16SC4
,
CV_32SC1
,
CV_32FC1
)
)
);
}
// namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录