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
c886afb5
Commit
c886afb5
authored
Mar 30, 2013
by
Andrey Kamaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finalize cv::Mat transition
parent
71e43852
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
151 additions
and
22 deletions
+151
-22
five-point.cpp
modules/calib3d/src/five-point.cpp
+0
-0
core.hpp
modules/core/include/opencv2/core.hpp
+0
-0
base.hpp
modules/core/include/opencv2/core/base.hpp
+15
-6
mat.hpp
modules/core/include/opencv2/core/mat.hpp
+0
-0
mat.inl.hpp
modules/core/include/opencv2/core/mat.inl.hpp
+0
-0
operations.hpp
modules/core/include/opencv2/core/operations.hpp
+111
-0
matop.cpp
modules/core/src/matop.cpp
+4
-0
matrix.cpp
modules/core/src/matrix.cpp
+21
-16
No files found.
modules/calib3d/src/five-point.cpp
View file @
c886afb5
modules/core/include/opencv2/core.hpp
View file @
c886afb5
This diff is collapsed.
Click to expand it.
modules/core/include/opencv2/core/base.hpp
View file @
c886afb5
...
...
@@ -279,11 +279,22 @@ CV_EXPORTS int LU(float* A, size_t astep, int m, float* b, size_t bstep, int n);
CV_EXPORTS
int
LU
(
double
*
A
,
size_t
astep
,
int
m
,
double
*
b
,
size_t
bstep
,
int
n
);
CV_EXPORTS
bool
Cholesky
(
float
*
A
,
size_t
astep
,
int
m
,
float
*
b
,
size_t
bstep
,
int
n
);
CV_EXPORTS
bool
Cholesky
(
double
*
A
,
size_t
astep
,
int
m
,
double
*
b
,
size_t
bstep
,
int
n
);
CV_EXPORTS
float
normL2Sqr_
(
const
float
*
a
,
const
float
*
b
,
int
n
);
CV_EXPORTS
float
normL1_
(
const
float
*
a
,
const
float
*
b
,
int
n
);
CV_EXPORTS
int
normL1_
(
const
uchar
*
a
,
const
uchar
*
b
,
int
n
);
CV_EXPORTS
int
normHamming
(
const
uchar
*
a
,
const
uchar
*
b
,
int
n
);
CV_EXPORTS
int
normHamming
(
const
uchar
*
a
,
const
uchar
*
b
,
int
n
,
int
cellSize
);
CV_EXPORTS
float
normL1_
(
const
float
*
a
,
const
float
*
b
,
int
n
);
CV_EXPORTS
float
normL2Sqr_
(
const
float
*
a
,
const
float
*
b
,
int
n
);
CV_EXPORTS
void
exp
(
const
float
*
src
,
float
*
dst
,
int
n
);
CV_EXPORTS
void
log
(
const
float
*
src
,
float
*
dst
,
int
n
);
CV_EXPORTS
void
fastAtan2
(
const
float
*
y
,
const
float
*
x
,
float
*
dst
,
int
n
,
bool
angleInDegrees
);
CV_EXPORTS
void
magnitude
(
const
float
*
x
,
const
float
*
y
,
float
*
dst
,
int
n
);
//! computes cube root of the argument
CV_EXPORTS_W
float
cubeRoot
(
float
val
);
//! computes the angle in degrees (0..360) of the vector (x,y)
CV_EXPORTS_W
float
fastAtan2
(
float
y
,
float
x
);
...
...
@@ -442,11 +453,11 @@ class CV_EXPORTS KeyPoint;
class
CV_EXPORTS
DMatch
;
class
CV_EXPORTS
Mat
;
class
CV_EXPORTS
MatExpr
;
class
CV_EXPORTS
SparseMat
;
typedef
Mat
MatND
;
class
CV_EXPORTS
MatExpr
;
template
<
typename
_Tp
>
class
CV_EXPORTS
Mat_
;
template
<
typename
_Tp
>
class
CV_EXPORTS
SparseMat_
;
...
...
@@ -470,8 +481,6 @@ namespace gpu
class
CV_EXPORTS
GpuMat
;
}
}
// cv
#endif //__OPENCV_CORE_BASE_HPP__
modules/core/include/opencv2/core/mat.hpp
View file @
c886afb5
This diff is collapsed.
Click to expand it.
modules/core/include/opencv2/core/mat.inl.hpp
View file @
c886afb5
This diff is collapsed.
Click to expand it.
modules/core/include/opencv2/core/operations.hpp
View file @
c886afb5
...
...
@@ -234,6 +234,110 @@ Matx<_Tp, n, l> Matx<_Tp, m, n>::solve(const Matx<_Tp, m, l>& rhs, int method) c
}
////////////////////////////// Augmenting algebraic & logical operations //////////////////////////////////
#define CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \
static inline A& operator op (A& a, const B& b) { cvop; return a; }
#define CV_MAT_AUG_OPERATOR(op, cvop, A, B) \
CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \
CV_MAT_AUG_OPERATOR1(op, cvop, const A, B)
#define CV_MAT_AUG_OPERATOR_T(op, cvop, A, B) \
template<typename _Tp> CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \
template<typename _Tp> CV_MAT_AUG_OPERATOR1(op, cvop, const A, B)
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
(
-=
,
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
(
*=
,
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
(
/=
,
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
(
&=
,
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
(
|=
,
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
(
^=
,
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
>
)
#undef CV_MAT_AUG_OPERATOR_T
#undef CV_MAT_AUG_OPERATOR
#undef CV_MAT_AUG_OPERATOR1
///////////////////////////////////////////// SVD //////////////////////////////////////////////////////
inline
SVD
::
SVD
()
{}
inline
SVD
::
SVD
(
InputArray
m
,
int
flags
)
{
operator
()(
m
,
flags
);
}
inline
void
SVD
::
solveZ
(
InputArray
m
,
OutputArray
_dst
)
{
Mat
mtx
=
m
.
getMat
();
SVD
svd
(
mtx
,
(
mtx
.
rows
>=
mtx
.
cols
?
0
:
SVD
::
FULL_UV
));
_dst
.
create
(
svd
.
vt
.
cols
,
1
,
svd
.
vt
.
type
());
Mat
dst
=
_dst
.
getMat
();
svd
.
vt
.
row
(
svd
.
vt
.
rows
-
1
).
reshape
(
1
,
svd
.
vt
.
cols
).
copyTo
(
dst
);
}
template
<
typename
_Tp
,
int
m
,
int
n
,
int
nm
>
inline
void
SVD
::
compute
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
Matx
<
_Tp
,
nm
,
1
>&
w
,
Matx
<
_Tp
,
m
,
nm
>&
u
,
Matx
<
_Tp
,
n
,
nm
>&
vt
)
{
CV_StaticAssert
(
nm
==
MIN
(
m
,
n
),
"Invalid size of output vector."
);
Mat
_a
(
a
,
false
),
_u
(
u
,
false
),
_w
(
w
,
false
),
_vt
(
vt
,
false
);
SVD
::
compute
(
_a
,
_w
,
_u
,
_vt
);
CV_Assert
(
_w
.
data
==
(
uchar
*
)
&
w
.
val
[
0
]
&&
_u
.
data
==
(
uchar
*
)
&
u
.
val
[
0
]
&&
_vt
.
data
==
(
uchar
*
)
&
vt
.
val
[
0
]);
}
template
<
typename
_Tp
,
int
m
,
int
n
,
int
nm
>
inline
void
SVD
::
compute
(
const
Matx
<
_Tp
,
m
,
n
>&
a
,
Matx
<
_Tp
,
nm
,
1
>&
w
)
{
CV_StaticAssert
(
nm
==
MIN
(
m
,
n
),
"Invalid size of output vector."
);
Mat
_a
(
a
,
false
),
_w
(
w
,
false
);
SVD
::
compute
(
_a
,
_w
);
CV_Assert
(
_w
.
data
==
(
uchar
*
)
&
w
.
val
[
0
]);
}
template
<
typename
_Tp
,
int
m
,
int
n
,
int
nm
,
int
nb
>
inline
void
SVD
::
backSubst
(
const
Matx
<
_Tp
,
nm
,
1
>&
w
,
const
Matx
<
_Tp
,
m
,
nm
>&
u
,
const
Matx
<
_Tp
,
n
,
nm
>&
vt
,
const
Matx
<
_Tp
,
m
,
nb
>&
rhs
,
Matx
<
_Tp
,
n
,
nb
>&
dst
)
{
CV_StaticAssert
(
nm
==
MIN
(
m
,
n
),
"Invalid size of output vector."
);
Mat
_u
(
u
,
false
),
_w
(
w
,
false
),
_vt
(
vt
,
false
),
_rhs
(
rhs
,
false
),
_dst
(
dst
,
false
);
SVD
::
backSubst
(
_w
,
_u
,
_vt
,
_rhs
,
_dst
);
CV_Assert
(
_dst
.
data
==
(
uchar
*
)
&
dst
.
val
[
0
]);
}
//////////////////////////////// Vector ////////////////////////////////
// template vector class. It is similar to STL's vector,
...
...
@@ -500,6 +604,13 @@ inline Point LineIterator::pos() const
return
p
;
}
//! returns the next unifomly-distributed random number of the specified type
template
<
typename
_Tp
>
static
inline
_Tp
randu
()
{
return
(
_Tp
)
theRNG
();
}
//////////////////////////////////////// XML & YAML I/O ////////////////////////////////////
CV_EXPORTS_W
void
write
(
FileStorage
&
fs
,
const
String
&
name
,
int
value
);
...
...
modules/core/src/matop.cpp
View file @
c886afb5
...
...
@@ -220,6 +220,10 @@ static inline bool isInitializer(const MatExpr& e) { return e.op == &g_MatOp_Ini
/////////////////////////////////////////////////////////////////////////////////////////////////////
MatOp
::
MatOp
()
{}
MatOp
::~
MatOp
()
{}
bool
MatOp
::
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
...
...
modules/core/src/matrix.cpp
View file @
c886afb5
...
...
@@ -262,9 +262,10 @@ void Mat::deallocate()
}
Mat
::
Mat
(
const
Mat
&
m
,
const
Range
&
_rowRange
,
const
Range
&
_colRange
)
:
size
(
&
rows
)
Mat
::
Mat
(
const
Mat
&
m
,
const
Range
&
_rowRange
,
const
Range
&
_colRange
)
:
flags
(
MAGIC_VAL
),
dims
(
0
),
rows
(
0
),
cols
(
0
),
data
(
0
),
refcount
(
0
),
datastart
(
0
),
dataend
(
0
),
datalimit
(
0
),
allocator
(
0
),
size
(
&
rows
)
{
initEmpty
();
CV_Assert
(
m
.
dims
>=
2
);
if
(
m
.
dims
>
2
)
{
...
...
@@ -335,9 +336,10 @@ Mat::Mat(const Mat& m, const Rect& roi)
}
Mat
::
Mat
(
int
_dims
,
const
int
*
_sizes
,
int
_type
,
void
*
_data
,
const
size_t
*
_steps
)
:
size
(
&
rows
)
Mat
::
Mat
(
int
_dims
,
const
int
*
_sizes
,
int
_type
,
void
*
_data
,
const
size_t
*
_steps
)
:
flags
(
MAGIC_VAL
),
dims
(
0
),
rows
(
0
),
cols
(
0
),
data
(
0
),
refcount
(
0
),
datastart
(
0
),
dataend
(
0
),
datalimit
(
0
),
allocator
(
0
),
size
(
&
rows
)
{
initEmpty
();
flags
|=
CV_MAT_TYPE
(
_type
);
data
=
datastart
=
(
uchar
*
)
_data
;
setSize
(
*
this
,
_dims
,
_sizes
,
_steps
,
true
);
...
...
@@ -345,9 +347,10 @@ Mat::Mat(int _dims, const int* _sizes, int _type, void* _data, const size_t* _st
}
Mat
::
Mat
(
const
Mat
&
m
,
const
Range
*
ranges
)
:
size
(
&
rows
)
Mat
::
Mat
(
const
Mat
&
m
,
const
Range
*
ranges
)
:
flags
(
MAGIC_VAL
),
dims
(
0
),
rows
(
0
),
cols
(
0
),
data
(
0
),
refcount
(
0
),
datastart
(
0
),
dataend
(
0
),
datalimit
(
0
),
allocator
(
0
),
size
(
&
rows
)
{
initEmpty
();
int
i
,
d
=
m
.
dims
;
CV_Assert
(
ranges
);
...
...
@@ -833,6 +836,18 @@ Mat Mat::reshape(int new_cn, int new_rows) const
return
hdr
;
}
Mat
Mat
::
diag
(
const
Mat
&
d
)
{
CV_Assert
(
d
.
cols
==
1
||
d
.
rows
==
1
);
int
len
=
d
.
rows
+
d
.
cols
-
1
;
Mat
m
(
len
,
len
,
d
.
type
(),
Scalar
(
0
));
Mat
md
=
m
.
diag
();
if
(
d
.
cols
==
1
)
d
.
copyTo
(
md
);
else
transpose
(
d
,
md
);
return
m
;
}
int
Mat
::
checkVector
(
int
_elemChannels
,
int
_depth
,
bool
_requireContinuous
)
const
{
...
...
@@ -3407,16 +3422,6 @@ void MatConstIterator::seek(const int* _idx, bool relative)
seek
(
ofs
,
relative
);
}
ptrdiff_t
operator
-
(
const
MatConstIterator
&
b
,
const
MatConstIterator
&
a
)
{
if
(
a
.
m
!=
b
.
m
)
return
INT_MAX
;
if
(
a
.
sliceEnd
==
b
.
sliceEnd
)
return
(
b
.
ptr
-
a
.
ptr
)
/
b
.
elemSize
;
return
b
.
lpos
()
-
a
.
lpos
();
}
//////////////////////////////// SparseMat ////////////////////////////////
template
<
typename
T1
,
typename
T2
>
void
...
...
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