Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
d25cbaab
Commit
d25cbaab
authored
Sep 07, 2017
by
Vadim Pisarevsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #9293 from sovrasov:assert_improvement
parents
4970a563
9a10bdba
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
25 deletions
+40
-25
base.hpp
modules/core/include/opencv2/core/base.hpp
+16
-1
matmul.cpp
modules/core/src/matmul.cpp
+24
-24
No files found.
modules/core/include/opencv2/core/base.hpp
View file @
d25cbaab
...
...
@@ -424,7 +424,22 @@ The macros CV_Assert (and CV_DbgAssert(expr)) evaluate the specified expression.
raise an error (see cv::error). The macro CV_Assert checks the condition in both Debug and Release
configurations while CV_DbgAssert is only retained in the Debug configuration.
*/
#define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ )
#define CV_VA_NUM_ARGS_HELPER(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
#define CV_VA_NUM_ARGS(...) CV_VA_NUM_ARGS_HELPER(__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
#define CV_Assert_1( expr ) if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ )
#define CV_Assert_2( expr1, expr2 ) CV_Assert_1(expr1); CV_Assert_1(expr2)
#define CV_Assert_3( expr1, expr2, expr3 ) CV_Assert_2(expr1, expr2); CV_Assert_1(expr3)
#define CV_Assert_4( expr1, expr2, expr3, expr4 ) CV_Assert_3(expr1, expr2, expr3); CV_Assert_1(expr4)
#define CV_Assert_5( expr1, expr2, expr3, expr4, expr5 ) CV_Assert_4(expr1, expr2, expr3, expr4); CV_Assert_1(expr5)
#define CV_Assert_6( expr1, expr2, expr3, expr4, expr5, expr6 ) CV_Assert_5(expr1, expr2, expr3, expr4, expr5); CV_Assert_1(expr6)
#define CV_Assert_7( expr1, expr2, expr3, expr4, expr5, expr6, expr7 ) CV_Assert_6(expr1, expr2, expr3, expr4, expr5, expr6 ); CV_Assert_1(expr7)
#define CV_Assert_8( expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8 ) CV_Assert_7(expr1, expr2, expr3, expr4, expr5, expr6, expr7 ); CV_Assert_1(expr8)
#define CV_Assert_9( expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8, expr9 ) CV_Assert_8(expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8 ); CV_Assert_1(expr9)
#define CV_Assert_10( expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8, expr9, expr10 ) CV_Assert_9(expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8, expr9 ); CV_Assert_1(expr10)
#define CV_Assert(...) CVAUX_CONCAT(CV_Assert_, CV_VA_NUM_ARGS(__VA_ARGS__)) (__VA_ARGS__)
/** same as CV_Error(code,msg), but does not return */
#define CV_ErrorNoReturn( code, msg ) cv::errorNoReturn( code, msg, CV_Func, __FILE__, __LINE__ )
...
...
modules/core/src/matmul.cpp
View file @
d25cbaab
...
...
@@ -796,7 +796,7 @@ static bool ocl_gemm( InputArray matA, InputArray matB, double alpha,
int
depth
=
matA
.
depth
(),
cn
=
matA
.
channels
();
int
type
=
CV_MAKETYPE
(
depth
,
cn
);
CV_Assert
(
type
==
matB
.
type
()
&&
(
type
==
CV_32FC1
||
type
==
CV_64FC1
||
type
==
CV_32FC2
||
type
==
CV_64FC2
)
);
CV_Assert
(
type
==
matB
.
type
()
,
(
type
==
CV_32FC1
||
type
==
CV_64FC1
||
type
==
CV_32FC2
||
type
==
CV_64FC2
)
);
const
ocl
::
Device
&
dev
=
ocl
::
Device
::
getDefault
();
bool
doubleSupport
=
dev
.
doubleFPConfig
()
>
0
;
...
...
@@ -1555,7 +1555,7 @@ void cv::gemm( InputArray matA, InputArray matB, double alpha,
Size
a_size
=
A
.
size
(),
d_size
;
int
len
=
0
,
type
=
A
.
type
();
CV_Assert
(
type
==
B
.
type
()
&&
(
type
==
CV_32FC1
||
type
==
CV_64FC1
||
type
==
CV_32FC2
||
type
==
CV_64FC2
)
);
CV_Assert
(
type
==
B
.
type
()
,
(
type
==
CV_32FC1
||
type
==
CV_64FC1
||
type
==
CV_32FC2
||
type
==
CV_64FC2
)
);
switch
(
flags
&
(
GEMM_1_T
|
GEMM_2_T
)
)
{
...
...
@@ -1583,7 +1583,7 @@ void cv::gemm( InputArray matA, InputArray matB, double alpha,
if
(
!
C
.
empty
()
)
{
CV_Assert
(
C
.
type
()
==
type
&&
CV_Assert
(
C
.
type
()
==
type
,
(((
flags
&
GEMM_3_T
)
==
0
&&
C
.
rows
==
d_size
.
height
&&
C
.
cols
==
d_size
.
width
)
||
((
flags
&
GEMM_3_T
)
!=
0
&&
C
.
rows
==
d_size
.
width
&&
C
.
cols
==
d_size
.
height
)));
}
...
...
@@ -2537,7 +2537,7 @@ void cv::calcCovarMatrix( const Mat* data, int nsamples, Mat& covar, Mat& _mean,
{
CV_INSTRUMENT_REGION
()
CV_Assert
(
data
&&
nsamples
>
0
);
CV_Assert
(
data
,
nsamples
>
0
);
Size
size
=
data
[
0
].
size
();
int
sz
=
size
.
width
*
size
.
height
,
esz
=
(
int
)
data
[
0
].
elemSize
();
int
type
=
data
[
0
].
type
();
...
...
@@ -2560,7 +2560,7 @@ void cv::calcCovarMatrix( const Mat* data, int nsamples, Mat& covar, Mat& _mean,
for
(
int
i
=
0
;
i
<
nsamples
;
i
++
)
{
CV_Assert
(
data
[
i
].
size
()
==
size
&&
data
[
i
].
type
()
==
type
);
CV_Assert
(
data
[
i
].
size
()
==
size
,
data
[
i
].
type
()
==
type
);
if
(
data
[
i
].
isContinuous
()
)
memcpy
(
_data
.
ptr
(
i
),
data
[
i
].
ptr
(),
sz
*
esz
);
else
...
...
@@ -2596,7 +2596,7 @@ void cv::calcCovarMatrix( InputArray _src, OutputArray _covar, InputOutputArray
int
i
=
0
;
for
(
std
::
vector
<
cv
::
Mat
>::
iterator
each
=
src
.
begin
();
each
!=
src
.
end
();
++
each
,
++
i
)
{
CV_Assert
(
(
*
each
).
size
()
==
size
&&
(
*
each
).
type
()
==
type
);
CV_Assert
(
(
*
each
).
size
()
==
size
,
(
*
each
).
type
()
==
type
);
Mat
dataRow
(
size
.
height
,
size
.
width
,
type
,
_data
.
ptr
(
i
));
(
*
each
).
copyTo
(
dataRow
);
}
...
...
@@ -2675,8 +2675,8 @@ double cv::Mahalanobis( InputArray _v1, InputArray _v2, InputArray _icovar )
AutoBuffer
<
double
>
buf
(
len
);
double
result
=
0
;
CV_Assert
(
type
==
v2
.
type
()
&&
type
==
icovar
.
type
()
&&
sz
==
v2
.
size
()
&&
len
==
icovar
.
rows
&&
len
==
icovar
.
cols
);
CV_Assert
(
type
==
v2
.
type
()
,
type
==
icovar
.
type
(),
sz
==
v2
.
size
()
,
len
==
icovar
.
rows
&&
len
==
icovar
.
cols
);
sz
.
width
*=
v1
.
channels
();
if
(
v1
.
isContinuous
()
&&
v2
.
isContinuous
()
)
...
...
@@ -2968,8 +2968,8 @@ void cv::mulTransposed( InputArray _src, OutputArray _dst, bool ata,
if
(
!
delta
.
empty
()
)
{
CV_Assert
(
delta
.
channels
()
==
1
&&
(
delta
.
rows
==
src
.
rows
||
delta
.
rows
==
1
)
&&
CV_Assert
(
delta
.
channels
()
==
1
,
(
delta
.
rows
==
src
.
rows
||
delta
.
rows
==
1
)
,
(
delta
.
cols
==
src
.
cols
||
delta
.
cols
==
1
));
if
(
delta
.
type
()
!=
dtype
)
delta
.
convertTo
(
delta
,
dtype
);
...
...
@@ -3380,7 +3380,7 @@ double Mat::dot(InputArray _mat) const
Mat
mat
=
_mat
.
getMat
();
int
cn
=
channels
();
DotProdFunc
func
=
getDotProdFunc
(
depth
());
CV_Assert
(
mat
.
type
()
==
type
()
&&
mat
.
size
==
size
&&
func
!=
0
);
CV_Assert
(
mat
.
type
()
==
type
()
,
mat
.
size
==
size
,
func
!=
0
);
if
(
isContinuous
()
&&
mat
.
isContinuous
()
)
{
...
...
@@ -3416,8 +3416,8 @@ CV_IMPL void cvGEMM( const CvArr* Aarr, const CvArr* Barr, double alpha,
if
(
Carr
)
C
=
cv
::
cvarrToMat
(
Carr
);
CV_Assert
(
(
D
.
rows
==
((
flags
&
CV_GEMM_A_T
)
==
0
?
A
.
rows
:
A
.
cols
))
&&
(
D
.
cols
==
((
flags
&
CV_GEMM_B_T
)
==
0
?
B
.
cols
:
B
.
rows
))
&&
CV_Assert
(
(
D
.
rows
==
((
flags
&
CV_GEMM_A_T
)
==
0
?
A
.
rows
:
A
.
cols
))
,
(
D
.
cols
==
((
flags
&
CV_GEMM_B_T
)
==
0
?
B
.
cols
:
B
.
rows
))
,
D
.
type
()
==
A
.
type
()
);
gemm
(
A
,
B
,
alpha
,
C
,
beta
,
D
,
flags
);
...
...
@@ -3439,7 +3439,7 @@ cvTransform( const CvArr* srcarr, CvArr* dstarr,
m
=
_m
;
}
CV_Assert
(
dst
.
depth
()
==
src
.
depth
()
&&
dst
.
channels
()
==
m
.
rows
);
CV_Assert
(
dst
.
depth
()
==
src
.
depth
()
,
dst
.
channels
()
==
m
.
rows
);
cv
::
transform
(
src
,
dst
,
m
);
}
...
...
@@ -3449,7 +3449,7 @@ cvPerspectiveTransform( const CvArr* srcarr, CvArr* dstarr, const CvMat* mat )
{
cv
::
Mat
m
=
cv
::
cvarrToMat
(
mat
),
src
=
cv
::
cvarrToMat
(
srcarr
),
dst
=
cv
::
cvarrToMat
(
dstarr
);
CV_Assert
(
dst
.
type
()
==
src
.
type
()
&&
dst
.
channels
()
==
m
.
rows
-
1
);
CV_Assert
(
dst
.
type
()
==
src
.
type
()
,
dst
.
channels
()
==
m
.
rows
-
1
);
cv
::
perspectiveTransform
(
src
,
dst
,
m
);
}
...
...
@@ -3459,7 +3459,7 @@ CV_IMPL void cvScaleAdd( const CvArr* srcarr1, CvScalar scale,
{
cv
::
Mat
src1
=
cv
::
cvarrToMat
(
srcarr1
),
dst
=
cv
::
cvarrToMat
(
dstarr
);
CV_Assert
(
src1
.
size
==
dst
.
size
&&
src1
.
type
()
==
dst
.
type
()
);
CV_Assert
(
src1
.
size
==
dst
.
size
,
src1
.
type
()
==
dst
.
type
()
);
cv
::
scaleAdd
(
src1
,
scale
.
val
[
0
],
cv
::
cvarrToMat
(
srcarr2
),
dst
);
}
...
...
@@ -3469,7 +3469,7 @@ cvCalcCovarMatrix( const CvArr** vecarr, int count,
CvArr
*
covarr
,
CvArr
*
avgarr
,
int
flags
)
{
cv
::
Mat
cov0
=
cv
::
cvarrToMat
(
covarr
),
cov
=
cov0
,
mean0
,
mean
;
CV_Assert
(
vecarr
!=
0
&&
count
>=
1
);
CV_Assert
(
vecarr
!=
0
,
count
>=
1
);
if
(
avgarr
)
mean
=
mean0
=
cv
::
cvarrToMat
(
avgarr
);
...
...
@@ -3549,9 +3549,9 @@ cvCalcPCA( const CvArr* data_arr, CvArr* avg_arr, CvArr* eigenvals, CvArr* eigen
int
ecount0
=
evals0
.
cols
+
evals0
.
rows
-
1
;
int
ecount
=
evals
.
cols
+
evals
.
rows
-
1
;
CV_Assert
(
(
evals0
.
cols
==
1
||
evals0
.
rows
==
1
)
&&
ecount0
<=
ecount
&&
evects0
.
cols
==
evects
.
cols
&&
CV_Assert
(
(
evals0
.
cols
==
1
||
evals0
.
rows
==
1
)
,
ecount0
<=
ecount
,
evects0
.
cols
==
evects
.
cols
,
evects0
.
rows
==
ecount0
);
cv
::
Mat
temp
=
evals0
;
...
...
@@ -3580,12 +3580,12 @@ cvProjectPCA( const CvArr* data_arr, const CvArr* avg_arr,
int
n
;
if
(
mean
.
rows
==
1
)
{
CV_Assert
(
dst
.
cols
<=
evects
.
rows
&&
dst
.
rows
==
data
.
rows
);
CV_Assert
(
dst
.
cols
<=
evects
.
rows
,
dst
.
rows
==
data
.
rows
);
n
=
dst
.
cols
;
}
else
{
CV_Assert
(
dst
.
rows
<=
evects
.
rows
&&
dst
.
cols
==
data
.
cols
);
CV_Assert
(
dst
.
rows
<=
evects
.
rows
,
dst
.
cols
==
data
.
cols
);
n
=
dst
.
rows
;
}
pca
.
eigenvectors
=
evects
.
rowRange
(
0
,
n
);
...
...
@@ -3611,12 +3611,12 @@ cvBackProjectPCA( const CvArr* proj_arr, const CvArr* avg_arr,
int
n
;
if
(
mean
.
rows
==
1
)
{
CV_Assert
(
data
.
cols
<=
evects
.
rows
&&
dst
.
rows
==
data
.
rows
);
CV_Assert
(
data
.
cols
<=
evects
.
rows
,
dst
.
rows
==
data
.
rows
);
n
=
data
.
cols
;
}
else
{
CV_Assert
(
data
.
rows
<=
evects
.
rows
&&
dst
.
cols
==
data
.
cols
);
CV_Assert
(
data
.
rows
<=
evects
.
rows
,
dst
.
cols
==
data
.
cols
);
n
=
data
.
rows
;
}
pca
.
eigenvectors
=
evects
.
rowRange
(
0
,
n
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment