Class cv::MatExpr#
Matrix expression representation This is a list of implemented matrix operations that can be combined in arbitrary complex expressions (here A, B stand for matrices ( cv::Mat ), s for a cv::Scalar, alpha for a real-valued scalar ( double )): View details
#include <opencv2/core/mat.hpp>Collaboration diagram for cv::MatExpr:
Detailed Description#
Matrix expression representation This is a list of implemented matrix operations that can be combined in arbitrary complex expressions (here A, B stand for matrices ( cv::Mat ), s for a cv::Scalar, alpha for a real-valued scalar ( double )):
Addition, subtraction, negation:
A+B,A-B,A+s,A-s,s+A,s-A,-AScaling:
A*alphaPer-element multiplication and division:
A.mul(B),A/B,alpha/AMatrix multiplication:
A*BTransposition:
A.t()(means AT)Matrix inversion and pseudo-inversion, solving linear systems and least-squares problems:
A.inv([method]) (~ A<sup>-1</sup>),A.inv([method])*B (~ X: AX=B)Comparison:
A cmpop B,A cmpop alpha,alpha cmpop A, where cmpop is one of>,>=,==,!=,<=,<. The result of comparison is an 8-bit single channel mask whose elements are set to 255 (if the particular element or pair of elements satisfy the condition) or 0.Bitwise logical operations:
A logicop B,A logicop s,s logicop A,~A, where logicop is one of&,|,^.Element-wise minimum and maximum: cv::min(A, B), cv::min(A, alpha), cv::max(A, B), cv::max(A, alpha)
Element-wise absolute value: cv::abs(A)
Cross-product, dot-product:
A.cross(B),A.dot(B)Any function of matrix or matrices and scalars that returns a matrix or a scalar, such as cv::norm, cv::mean, cv::sum, cv::countNonZero, cv::trace, cv::determinant, cv::repeat, and others.
Matrix initializers ( Mat::eye(), Mat::zeros(), Mat::ones() ), matrix comma-separated initializers, matrix constructors and operators that extract sub-matrices (see cv::Mat description).
Mat_<destination_type>() constructors to cast the result to the proper type.
Here are examples of matrix expressions:
// compute pseudo-inverse of A, equivalent to A.inv(DECOMP_SVD) SVD svd(A); Mat pinvA = svd.vt.t()*Mat::diag(1./svd.w)*svd.u.t(); // compute the new vector of parameters in the Levenberg-Marquardt algorithm x -= (A.t()*A + lambda*Mat::eye(A.cols,A.cols,A.type())).inv(DECOMP_CHOLESKY)*(A.t()*err); // sharpen image using "unsharp mask" algorithm Mat blurred; double sigma = 1, threshold = 5, amount = 1; GaussianBlur(img, blurred, Size(), sigma, sigma); Mat lowContrastMask = abs(img - blurred) < threshold; Mat sharpened = img*(1+amount) + blurred*(-amount); img.copyTo(sharpened, lowContrastMask);
Note
Comma-separated initializers and probably some other operations may require additional explicit Mat() or Mat_<T>() constructor calls to resolve a possible ambiguity.
Constructor & Destructor Documentation#
MatExpr()#
MatExpr()#
cv::MatExpr::MatExpr(const Mat & m)
MatExpr()#
cv::MatExpr::MatExpr(
const MatOp * _op,
int _flags,
const Mat & _a = Mat(),
const Mat & _b = Mat(),
const Mat & _c = Mat(),
double _alpha = 1,
double _beta = 1,
const Scalar & _s = Scalar() )
Member Function Documentation#
operator+()#
MatExpr cv::MatExpr::operator+(
const Mat & a,
const Mat & b )
operator+()#
MatExpr cv::MatExpr::operator+(
const Mat & a,
const Scalar & s )
operator+()#
MatExpr cv::MatExpr::operator+(
const Scalar & s,
const Mat & a )
operator+()#
MatExpr cv::MatExpr::operator+(
const MatExpr & e,
const Mat & m )
operator+()#
MatExpr cv::MatExpr::operator+(
const Mat & m,
const MatExpr & e )
operator+()#
MatExpr cv::MatExpr::operator+(
const MatExpr & e,
const Scalar & s )
operator+()#
MatExpr cv::MatExpr::operator+(
const Scalar & s,
const MatExpr & e )
operator+()#
MatExpr cv::MatExpr::operator+(
const MatExpr & e1,
const MatExpr & e2 )
operator+()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator+(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator+()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator+(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator-()#
MatExpr cv::MatExpr::operator-(
const Mat & a,
const Mat & b )
operator-()#
MatExpr cv::MatExpr::operator-(
const Mat & a,
const Scalar & s )
operator-()#
MatExpr cv::MatExpr::operator-(
const Scalar & s,
const Mat & a )
operator-()#
MatExpr cv::MatExpr::operator-(
const MatExpr & e,
const Mat & m )
operator-()#
MatExpr cv::MatExpr::operator-(
const Mat & m,
const MatExpr & e )
operator-()#
MatExpr cv::MatExpr::operator-(
const MatExpr & e,
const Scalar & s )
operator-()#
MatExpr cv::MatExpr::operator-(
const Scalar & s,
const MatExpr & e )
operator-()#
MatExpr cv::MatExpr::operator-(
const MatExpr & e1,
const MatExpr & e2 )
operator-()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator-(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator-()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator-(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator-()#
MatExpr cv::MatExpr::operator-(const Mat & m)
operator-()#
MatExpr cv::MatExpr::operator-(const MatExpr & e)
operator*()#
MatExpr cv::MatExpr::operator*(
const Mat & a,
const Mat & b )
operator*()#
MatExpr cv::MatExpr::operator*(
const Mat & a,
double s )
operator*()#
MatExpr cv::MatExpr::operator*(
double s,
const Mat & a )
operator*()#
MatExpr cv::MatExpr::operator*(
const MatExpr & e,
const Mat & m )
operator*()#
MatExpr cv::MatExpr::operator*(
const Mat & m,
const MatExpr & e )
operator*()#
MatExpr cv::MatExpr::operator*(
const MatExpr & e,
double s )
operator*()#
MatExpr cv::MatExpr::operator*(
double s,
const MatExpr & e )
operator*()#
MatExpr cv::MatExpr::operator*(
const MatExpr & e1,
const MatExpr & e2 )
operator*()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator*(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator*()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator*(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator/()#
MatExpr cv::MatExpr::operator/(
const Mat & a,
const Mat & b )
operator/()#
MatExpr cv::MatExpr::operator/(
const Mat & a,
double s )
operator/()#
MatExpr cv::MatExpr::operator/(
double s,
const Mat & a )
operator/()#
MatExpr cv::MatExpr::operator/(
const MatExpr & e,
const Mat & m )
operator/()#
MatExpr cv::MatExpr::operator/(
const Mat & m,
const MatExpr & e )
operator/()#
MatExpr cv::MatExpr::operator/(
const MatExpr & e,
double s )
operator/()#
MatExpr cv::MatExpr::operator/(
double s,
const MatExpr & e )
operator/()#
MatExpr cv::MatExpr::operator/(
const MatExpr & e1,
const MatExpr & e2 )
operator/()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator/(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator/()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator/(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator<()#
MatExpr cv::MatExpr::operator<(
const Mat & a,
const Mat & b )
operator<()#
MatExpr cv::MatExpr::operator<(
const Mat & a,
double s )
operator<()#
MatExpr cv::MatExpr::operator<(
double s,
const Mat & a )
operator<()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator<(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator<()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator<(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator<=()#
MatExpr cv::MatExpr::operator<=(
const Mat & a,
const Mat & b )
operator<=()#
MatExpr cv::MatExpr::operator<=(
const Mat & a,
double s )
operator<=()#
MatExpr cv::MatExpr::operator<=(
double s,
const Mat & a )
operator<=()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator<=(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator<=()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator<=(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator==()#
MatExpr cv::MatExpr::operator==(
const Mat & a,
const Mat & b )
operator==()#
MatExpr cv::MatExpr::operator==(
const Mat & a,
double s )
operator==()#
MatExpr cv::MatExpr::operator==(
double s,
const Mat & a )
operator==()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator==(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator==()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator==(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator!=()#
MatExpr cv::MatExpr::operator!=(
const Mat & a,
const Mat & b )
operator!=()#
MatExpr cv::MatExpr::operator!=(
const Mat & a,
double s )
operator!=()#
MatExpr cv::MatExpr::operator!=(
double s,
const Mat & a )
operator!=()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator!=(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator!=()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator!=(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator>=()#
MatExpr cv::MatExpr::operator>=(
const Mat & a,
const Mat & b )
operator>=()#
MatExpr cv::MatExpr::operator>=(
const Mat & a,
double s )
operator>=()#
MatExpr cv::MatExpr::operator>=(
double s,
const Mat & a )
operator>=()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator>=(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator>=()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator>=(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator>()#
MatExpr cv::MatExpr::operator>(
const Mat & a,
const Mat & b )
operator>()#
MatExpr cv::MatExpr::operator>(
const Mat & a,
double s )
operator>()#
MatExpr cv::MatExpr::operator>(
double s,
const Mat & a )
operator>()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator>(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator>()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator>(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator&()#
MatExpr cv::MatExpr::operator&(
const Mat & a,
const Mat & b )
operator&()#
MatExpr cv::MatExpr::operator&(
const Mat & a,
const Scalar & s )
operator&()#
MatExpr cv::MatExpr::operator&(
const Scalar & s,
const Mat & a )
operator&()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator&(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator&()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator&(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator|()#
MatExpr cv::MatExpr::operator|(
const Mat & a,
const Mat & b )
operator|()#
MatExpr cv::MatExpr::operator|(
const Mat & a,
const Scalar & s )
operator|()#
MatExpr cv::MatExpr::operator|(
const Scalar & s,
const Mat & a )
operator|()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator|(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator|()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator|(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator^()#
MatExpr cv::MatExpr::operator^(
const Mat & a,
const Mat & b )
operator^()#
MatExpr cv::MatExpr::operator^(
const Mat & a,
const Scalar & s )
operator^()#
MatExpr cv::MatExpr::operator^(
const Scalar & s,
const Mat & a )
operator^()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator^(
const Mat & a,
const Matx< _Tp, m, n > & b )
operator^()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::operator^(
const Matx< _Tp, m, n > & a,
const Mat & b )
operator~()#
MatExpr cv::MatExpr::operator~(const Mat & m)
min()#
MatExpr cv::MatExpr::min(
const Mat & a,
const Mat & b )
min()#
MatExpr cv::MatExpr::min(
const Mat & a,
double s )
min()#
MatExpr cv::MatExpr::min(
double s,
const Mat & a )
min()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::min(
const Mat & a,
const Matx< _Tp, m, n > & b )
Here is the call graph for this function:
min()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::min(
const Matx< _Tp, m, n > & a,
const Mat & b )
Here is the call graph for this function:
max()#
MatExpr cv::MatExpr::max(
const Mat & a,
const Mat & b )
max()#
MatExpr cv::MatExpr::max(
const Mat & a,
double s )
max()#
MatExpr cv::MatExpr::max(
double s,
const Mat & a )
max()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::max(
const Mat & a,
const Matx< _Tp, m, n > & b )
Here is the call graph for this function:
max()#
template<typename _Tp, int m, int n>
static MatExpr cv::MatExpr::max(
const Matx< _Tp, m, n > & a,
const Mat & b )
Here is the call graph for this function:
abs()#
MatExpr cv::MatExpr::abs(const Mat & m)
Calculates an absolute value of each matrix element.
abs is a meta-function that is expanded to one of absdiff or convertScaleAbs forms:
C = abs(A-B) is equivalent to
absdiff(A, B, C)C = abs(A) is equivalent to
absdiff(A, Scalar::all(0), C)C =
Mat_<Vec<uchar,n> >(abs(A*alpha + beta))is equivalent toconvertScaleAbs(A, C, alpha, beta)
The output matrix has the same size and the same type as the input one except for the last case, where C is depth=CV_8U .
See also
Parameters
m— matrix.
abs()#
MatExpr cv::MatExpr::abs(const MatExpr & e)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Parameters
e— matrix expression.
col()#
MatExpr cv::MatExpr::col(int x)
cross()#
Mat cv::MatExpr::cross(const Mat & m)
diag()#
MatExpr cv::MatExpr::diag(int d = 0)
dot()#
double cv::MatExpr::dot(const Mat & m)
inv()#
MatExpr cv::MatExpr::inv(int method = DECOMP_LU)
mul()#
MatExpr cv::MatExpr::mul(
const Mat & m,
double scale = 1 )
mul()#
MatExpr cv::MatExpr::mul(
const MatExpr & e,
double scale = 1 )
operator Mat()#
cv::MatExpr::operator Mat()
operator Mat_< _Tp >()#
template<typename _Tp>
cv::MatExpr::operator Mat_< _Tp >()
operator()()#
MatExpr cv::MatExpr::operator()(
const Range & rowRange,
const Range & colRange )
operator()()#
MatExpr cv::MatExpr::operator()(const Rect & roi)
row()#
MatExpr cv::MatExpr::row(int y)
size()#
Size cv::MatExpr::size()
swap()#
void cv::MatExpr::swap(MatExpr & b)
t()#
MatExpr cv::MatExpr::t()
type()#
int cv::MatExpr::type()
Member Data Documentation#
a#
Mat cv::MatExpr::a
alpha#
double cv::MatExpr::alpha
b#
Mat cv::MatExpr::b
beta#
double cv::MatExpr::beta
c#
Mat cv::MatExpr::c
flags#
int cv::MatExpr::flags
op#
const MatOp * cv::MatExpr::op
s#
Source file#
The documentation for this class was generated from the following file:
opencv2/core/mat.hpp