Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
c9dfcc4d
O
Opencv
项目概览
Greenplum
/
Opencv
10 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
c9dfcc4d
编写于
12月 26, 2018
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #13492 from terfendail:matx_addition
上级
ff8c53ea
cd169941
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
151 addition
and
0 deletion
+151
-0
modules/core/include/opencv2/core/mat.hpp
modules/core/include/opencv2/core/mat.hpp
+60
-0
modules/core/include/opencv2/core/operations.hpp
modules/core/include/opencv2/core/operations.hpp
+19
-0
modules/core/test/test_operations.cpp
modules/core/test/test_operations.cpp
+72
-0
未找到文件。
modules/core/include/opencv2/core/mat.hpp
浏览文件 @
c9dfcc4d
...
...
@@ -3597,6 +3597,10 @@ CV_EXPORTS MatExpr operator + (const Mat& m, const MatExpr& e);
CV_EXPORTS
MatExpr
operator
+
(
const
MatExpr
&
e
,
const
Scalar
&
s
);
CV_EXPORTS
MatExpr
operator
+
(
const
Scalar
&
s
,
const
MatExpr
&
e
);
CV_EXPORTS
MatExpr
operator
+
(
const
MatExpr
&
e1
,
const
MatExpr
&
e2
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
+
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
+
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
+
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
+
b
;
}
CV_EXPORTS
MatExpr
operator
-
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
-
(
const
Mat
&
a
,
const
Scalar
&
s
);
...
...
@@ -3606,6 +3610,10 @@ CV_EXPORTS MatExpr operator - (const Mat& m, const MatExpr& e);
CV_EXPORTS
MatExpr
operator
-
(
const
MatExpr
&
e
,
const
Scalar
&
s
);
CV_EXPORTS
MatExpr
operator
-
(
const
Scalar
&
s
,
const
MatExpr
&
e
);
CV_EXPORTS
MatExpr
operator
-
(
const
MatExpr
&
e1
,
const
MatExpr
&
e2
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
-
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
-
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
-
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
-
b
;
}
CV_EXPORTS
MatExpr
operator
-
(
const
Mat
&
m
);
CV_EXPORTS
MatExpr
operator
-
(
const
MatExpr
&
e
);
...
...
@@ -3618,6 +3626,10 @@ CV_EXPORTS MatExpr operator * (const Mat& m, const MatExpr& e);
CV_EXPORTS
MatExpr
operator
*
(
const
MatExpr
&
e
,
double
s
);
CV_EXPORTS
MatExpr
operator
*
(
double
s
,
const
MatExpr
&
e
);
CV_EXPORTS
MatExpr
operator
*
(
const
MatExpr
&
e1
,
const
MatExpr
&
e2
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
*
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
+
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
*
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
+
b
;
}
CV_EXPORTS
MatExpr
operator
/
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
/
(
const
Mat
&
a
,
double
s
);
...
...
@@ -3627,52 +3639,100 @@ CV_EXPORTS MatExpr operator / (const Mat& m, const MatExpr& e);
CV_EXPORTS
MatExpr
operator
/
(
const
MatExpr
&
e
,
double
s
);
CV_EXPORTS
MatExpr
operator
/
(
double
s
,
const
MatExpr
&
e
);
CV_EXPORTS
MatExpr
operator
/
(
const
MatExpr
&
e1
,
const
MatExpr
&
e2
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
/
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
/
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
/
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
/
b
;
}
CV_EXPORTS
MatExpr
operator
<
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
<
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
operator
<
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
<
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
<
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
<
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
<
b
;
}
CV_EXPORTS
MatExpr
operator
<=
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
<=
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
operator
<=
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
<=
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
<=
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
<=
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
<=
b
;
}
CV_EXPORTS
MatExpr
operator
==
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
==
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
operator
==
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
==
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
==
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
==
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
==
b
;
}
CV_EXPORTS
MatExpr
operator
!=
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
!=
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
operator
!=
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
!=
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
!=
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
!=
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
!=
b
;
}
CV_EXPORTS
MatExpr
operator
>=
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
>=
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
operator
>=
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
>=
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
>=
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
>=
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
>=
b
;
}
CV_EXPORTS
MatExpr
operator
>
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
>
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
operator
>
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
>
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
>
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
>
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
>
b
;
}
CV_EXPORTS
MatExpr
operator
&
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
&
(
const
Mat
&
a
,
const
Scalar
&
s
);
CV_EXPORTS
MatExpr
operator
&
(
const
Scalar
&
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
&
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
&
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
&
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
&
b
;
}
CV_EXPORTS
MatExpr
operator
|
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
|
(
const
Mat
&
a
,
const
Scalar
&
s
);
CV_EXPORTS
MatExpr
operator
|
(
const
Scalar
&
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
|
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
|
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
|
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
|
b
;
}
CV_EXPORTS
MatExpr
operator
^
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
operator
^
(
const
Mat
&
a
,
const
Scalar
&
s
);
CV_EXPORTS
MatExpr
operator
^
(
const
Scalar
&
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
^
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
a
^
Mat
(
b
);
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
operator
^
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
Mat
(
a
)
^
b
;
}
CV_EXPORTS
MatExpr
operator
~
(
const
Mat
&
m
);
CV_EXPORTS
MatExpr
min
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
min
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
min
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
min
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
min
(
a
,
Mat
(
b
));
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
min
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
min
(
Mat
(
a
),
b
);
}
CV_EXPORTS
MatExpr
max
(
const
Mat
&
a
,
const
Mat
&
b
);
CV_EXPORTS
MatExpr
max
(
const
Mat
&
a
,
double
s
);
CV_EXPORTS
MatExpr
max
(
double
s
,
const
Mat
&
a
);
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
max
(
const
Mat
&
a
,
const
Matx
<
_Tp
,
m
,
n
>&
b
)
{
return
max
(
a
,
Mat
(
b
));
}
template
<
typename
_Tp
,
int
m
,
int
n
>
static
inline
MatExpr
max
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
const
Mat
&
b
)
{
return
max
(
Mat
(
a
),
b
);
}
/** @brief Calculates an absolute value of each matrix element.
...
...
modules/core/include/opencv2/core/operations.hpp
浏览文件 @
c9dfcc4d
...
...
@@ -252,48 +252,67 @@ Matx<_Tp, n, l> Matx<_Tp, m, n>::solve(const Matx<_Tp, m, l>& rhs, int method) c
template<typename _Tp> CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \
template<typename _Tp> CV_MAT_AUG_OPERATOR1(op, cvop, const A, B)
#define CV_MAT_AUG_OPERATOR_TN(op, cvop, A) \
template<typename _Tp, int m, int n> static inline A& operator op (A& a, const Matx<_Tp,m,n>& b) { cvop; return a; } \
template<typename _Tp, int m, int n> static inline const A& operator op (const A& a, const Matx<_Tp,m,n>& b) { cvop; return a; }
CV_MAT_AUG_OPERATOR
(
+=
,
cv
::
add
(
a
,
b
,
a
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR
(
+=
,
cv
::
add
(
a
,
b
,
a
),
Mat
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
+=
,
cv
::
add
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
+=
,
cv
::
add
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
+=
,
cv
::
add
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR_TN
(
+=
,
cv
::
add
(
a
,
Mat
(
b
),
a
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
+=
,
cv
::
add
(
a
,
Mat
(
b
),
a
),
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
-=
,
cv
::
subtract
(
a
,
b
,
a
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR
(
-=
,
cv
::
subtract
(
a
,
b
,
a
),
Mat
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
-=
,
cv
::
subtract
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
-=
,
cv
::
subtract
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
-=
,
cv
::
subtract
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR_TN
(
-=
,
cv
::
subtract
(
a
,
Mat
(
b
),
a
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
-=
,
cv
::
subtract
(
a
,
Mat
(
b
),
a
),
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
*=
,
cv
::
gemm
(
a
,
b
,
1
,
Mat
(),
0
,
a
,
0
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
*=
,
cv
::
gemm
(
a
,
b
,
1
,
Mat
(),
0
,
a
,
0
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
*=
,
cv
::
gemm
(
a
,
b
,
1
,
Mat
(),
0
,
a
,
0
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
*=
,
a
.
convertTo
(
a
,
-
1
,
b
),
Mat
,
double
)
CV_MAT_AUG_OPERATOR_T
(
*=
,
a
.
convertTo
(
a
,
-
1
,
b
),
Mat_
<
_Tp
>
,
double
)
CV_MAT_AUG_OPERATOR_TN
(
*=
,
cv
::
gemm
(
a
,
Mat
(
b
),
1
,
Mat
(),
0
,
a
,
0
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
*=
,
cv
::
gemm
(
a
,
Mat
(
b
),
1
,
Mat
(),
0
,
a
,
0
),
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
/=
,
cv
::
divide
(
a
,
b
,
a
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
/=
,
cv
::
divide
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
/=
,
cv
::
divide
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
/=
,
a
.
convertTo
((
Mat
&
)
a
,
-
1
,
1.
/
b
),
Mat
,
double
)
CV_MAT_AUG_OPERATOR_T
(
/=
,
a
.
convertTo
((
Mat
&
)
a
,
-
1
,
1.
/
b
),
Mat_
<
_Tp
>
,
double
)
CV_MAT_AUG_OPERATOR_TN
(
/=
,
cv
::
divide
(
a
,
Mat
(
b
),
a
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
/=
,
cv
::
divide
(
a
,
Mat
(
b
),
a
),
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
&=
,
cv
::
bitwise_and
(
a
,
b
,
a
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR
(
&=
,
cv
::
bitwise_and
(
a
,
b
,
a
),
Mat
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
&=
,
cv
::
bitwise_and
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
&=
,
cv
::
bitwise_and
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
&=
,
cv
::
bitwise_and
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR_TN
(
&=
,
cv
::
bitwise_and
(
a
,
Mat
(
b
),
a
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
&=
,
cv
::
bitwise_and
(
a
,
Mat
(
b
),
a
),
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
|=
,
cv
::
bitwise_or
(
a
,
b
,
a
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR
(
|=
,
cv
::
bitwise_or
(
a
,
b
,
a
),
Mat
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
|=
,
cv
::
bitwise_or
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
|=
,
cv
::
bitwise_or
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
|=
,
cv
::
bitwise_or
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR_TN
(
|=
,
cv
::
bitwise_or
(
a
,
Mat
(
b
),
a
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
|=
,
cv
::
bitwise_or
(
a
,
Mat
(
b
),
a
),
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR
(
^=
,
cv
::
bitwise_xor
(
a
,
b
,
a
),
Mat
,
Mat
)
CV_MAT_AUG_OPERATOR
(
^=
,
cv
::
bitwise_xor
(
a
,
b
,
a
),
Mat
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
^=
,
cv
::
bitwise_xor
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat
)
CV_MAT_AUG_OPERATOR_T
(
^=
,
cv
::
bitwise_xor
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Scalar
)
CV_MAT_AUG_OPERATOR_T
(
^=
,
cv
::
bitwise_xor
(
a
,
b
,
a
),
Mat_
<
_Tp
>
,
Mat_
<
_Tp
>
)
CV_MAT_AUG_OPERATOR_TN
(
^=
,
cv
::
bitwise_xor
(
a
,
Mat
(
b
),
a
),
Mat
)
CV_MAT_AUG_OPERATOR_TN
(
^=
,
cv
::
bitwise_xor
(
a
,
Mat
(
b
),
a
),
Mat_
<
_Tp
>
)
#undef CV_MAT_AUG_OPERATOR_TN
#undef CV_MAT_AUG_OPERATOR_T
#undef CV_MAT_AUG_OPERATOR
#undef CV_MAT_AUG_OPERATOR1
...
...
modules/core/test/test_operations.cpp
浏览文件 @
c9dfcc4d
...
...
@@ -69,6 +69,7 @@ protected:
bool
TestVec
();
bool
TestMatxMultiplication
();
bool
TestMatxElementwiseDivison
();
bool
TestMatMatxCastSum
();
bool
TestSubMatAccess
();
bool
TestExp
();
bool
TestSVD
();
...
...
@@ -885,6 +886,74 @@ bool CV_OperationsTest::TestMatxMultiplication()
return
true
;
}
bool
CV_OperationsTest
::
TestMatMatxCastSum
()
{
try
{
Mat
ref1
=
(
Mat_
<
double
>
(
3
,
1
)
<<
1
,
2
,
3
);
Mat
ref2
=
(
Mat_
<
double
>
(
3
,
1
)
<<
3
,
4
,
5
);
Mat
ref3
=
Mat
::
ones
(
3
,
1
,
CV_64FC1
);
Mat
mat
=
Mat
::
zeros
(
3
,
1
,
CV_64FC1
);
Mat
tst1
=
ref1
.
clone
();
Mat_
<
double
>
tst2
=
ref2
.
clone
();
Matx
<
double
,
3
,
1
>
tst3
(
1
,
2
,
3
);
Vec3d
tst4
(
3
,
4
,
5
);
Scalar
tst5
(
1
,
2
,
3
);
Mat
res
;
res
=
mat
+
tst1
;
CHECK_DIFF_FLT
(
res
,
ref1
);
res
=
mat
+
tst2
;
CHECK_DIFF_FLT
(
res
,
ref2
);
res
=
mat
+
tst3
;
CHECK_DIFF_FLT
(
res
,
ref1
);
res
=
mat
+
tst4
;
CHECK_DIFF_FLT
(
res
,
ref2
);
res
=
mat
+
tst5
;
CHECK_DIFF_FLT
(
res
,
ref3
);
res
=
mat
+
1
;
CHECK_DIFF_FLT
(
res
,
ref3
);
cv
::
add
(
mat
,
tst1
,
res
);
CHECK_DIFF_FLT
(
res
,
ref1
);
cv
::
add
(
mat
,
tst2
,
res
);
CHECK_DIFF_FLT
(
res
,
ref2
);
cv
::
add
(
mat
,
tst3
,
res
);
CHECK_DIFF_FLT
(
res
,
ref1
);
cv
::
add
(
mat
,
tst4
,
res
);
CHECK_DIFF_FLT
(
res
,
ref2
);
cv
::
add
(
mat
,
tst5
,
res
);
CHECK_DIFF_FLT
(
res
,
ref3
);
cv
::
add
(
mat
,
1
,
res
);
CHECK_DIFF_FLT
(
res
,
ref3
);
res
=
mat
.
clone
();
res
+=
tst1
;
CHECK_DIFF_FLT
(
res
,
ref1
);
res
=
mat
.
clone
();
res
+=
tst2
;
CHECK_DIFF_FLT
(
res
,
ref2
);
res
=
mat
.
clone
();
res
+=
tst3
;
CHECK_DIFF_FLT
(
res
,
ref1
);
res
=
mat
.
clone
();
res
+=
tst4
;
CHECK_DIFF_FLT
(
res
,
ref2
);
res
=
mat
.
clone
();
res
+=
tst5
;
CHECK_DIFF_FLT
(
res
,
ref3
);
res
=
mat
.
clone
();
res
+=
1
;
CHECK_DIFF_FLT
(
res
,
ref3
);
}
catch
(
const
test_excep
&
e
)
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"%s
\n
"
,
e
.
s
.
c_str
());
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_MISMATCH
);
return
false
;
}
return
true
;
}
bool
CV_OperationsTest
::
TestMatxElementwiseDivison
()
{
try
...
...
@@ -1135,6 +1204,9 @@ void CV_OperationsTest::run( int /* start_from */)
if
(
!
TestMatxElementwiseDivison
())
return
;
if
(
!
TestMatMatxCastSum
())
return
;
if
(
!
TestSubMatAccess
())
return
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录