Table of Contents

Class MatExpr

Namespace
OpenCvSharp
Assembly
OpenCvSharp.dll

A purely managed, lazily-evaluated matrix expression — the result of Mat arithmetic. This is the managed counterpart of OpenCV's cv::MatExpr (issue #1974).

public sealed class MatExpr
Inheritance
MatExpr
Inherited Members

Remarks

A Mat operator such as a + b returns a MatExpr without creating any native object: it simply captures its operands in a deferred delegate. The native cv::MatExpr chain is built only when the expression is materialized (ToMat() or the implicit conversion to Mat), and every native intermediate is disposed immediately during that evaluation. Nothing escapes to the finalizer, intermediates never extend operand lifetimes, and no using dance is required: a chain such as 255 - mat * 0.8 is leak-free and can be received straight into a Mat.

Operators that OpenCV only defines on Mat (the comparisons, the bitwise operators, min/max) are evaluated by materializing the operand subtrees to Mat at that node and applying the Mat-level operation — exactly what OpenCV C++ does, since those operators take Mat and implicitly evaluate any expression operands. The arithmetic operators (+ - * /) and abs keep OpenCV's native cross-node expression fusion.

Methods

Abs()

Computes an absolute value of each matrix element (cv::abs). Keeps native expression fusion.

public MatExpr Abs()

Returns

MatExpr

Add(Mat)

public MatExpr Add(Mat m)

Parameters

m Mat

Returns

MatExpr

Add(MatExpr)

public MatExpr Add(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Add(Scalar)

public MatExpr Add(Scalar s)

Parameters

s Scalar

Returns

MatExpr

BitwiseAnd(Mat)

public MatExpr BitwiseAnd(Mat m)

Parameters

m Mat

Returns

MatExpr

BitwiseAnd(MatExpr)

public MatExpr BitwiseAnd(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

BitwiseAnd(double)

public MatExpr BitwiseAnd(double s)

Parameters

s double

Returns

MatExpr

BitwiseOr(Mat)

public MatExpr BitwiseOr(Mat m)

Parameters

m Mat

Returns

MatExpr

BitwiseOr(MatExpr)

public MatExpr BitwiseOr(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

BitwiseOr(double)

public MatExpr BitwiseOr(double s)

Parameters

s double

Returns

MatExpr

Col(int)

Creates a matrix header for the specified matrix column.

public MatExpr Col(int x)

Parameters

x int

Returns

MatExpr

Cross(Mat)

Computes a cross-product of two 3-element vectors. Materializes the expression.

public Mat Cross(Mat m)

Parameters

m Mat

Returns

Mat

Diag(MatDiagType)

Extracts a diagonal from a matrix.

public MatExpr Diag(MatDiagType d = MatDiagType.Main)

Parameters

d MatDiagType

Returns

MatExpr

Divide(Mat)

public MatExpr Divide(Mat m)

Parameters

m Mat

Returns

MatExpr

Divide(MatExpr)

public MatExpr Divide(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Divide(double)

public MatExpr Divide(double s)

Parameters

s double

Returns

MatExpr

Dot(Mat)

Computes a dot-product of two vectors. Materializes the expression.

public double Dot(Mat m)

Parameters

m Mat

Returns

double

Equal(Mat)

operator ==

public MatExpr Equal(Mat m)

Parameters

m Mat

Returns

MatExpr

Equal(MatExpr)

operator ==

public MatExpr Equal(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Equal(double)

operator ==

public MatExpr Equal(double d)

Parameters

d double

Returns

MatExpr

From(Mat)

Wraps a Mat as a leaf node of the expression tree.

public static MatExpr From(Mat mat)

Parameters

mat Mat

Returns

MatExpr

GreaterThan(Mat)

operator >

public MatExpr GreaterThan(Mat m)

Parameters

m Mat

Returns

MatExpr

GreaterThan(MatExpr)

operator >

public MatExpr GreaterThan(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

GreaterThan(double)

operator >

public MatExpr GreaterThan(double d)

Parameters

d double

Returns

MatExpr

GreaterThanOrEqual(Mat)

operator >=

public MatExpr GreaterThanOrEqual(Mat m)

Parameters

m Mat

Returns

MatExpr

GreaterThanOrEqual(MatExpr)

operator >=

public MatExpr GreaterThanOrEqual(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

GreaterThanOrEqual(double)

operator >=

public MatExpr GreaterThanOrEqual(double d)

Parameters

d double

Returns

MatExpr

Inv(DecompTypes)

Inversion (cv::MatExpr::inv).

public MatExpr Inv(DecompTypes method = DecompTypes.LU)

Parameters

method DecompTypes

Returns

MatExpr

LessThan(Mat)

operator <

public MatExpr LessThan(Mat m)

Parameters

m Mat

Returns

MatExpr

LessThan(MatExpr)

operator <

public MatExpr LessThan(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

LessThan(double)

operator <

public MatExpr LessThan(double d)

Parameters

d double

Returns

MatExpr

LessThanOrEqual(Mat)

operator <=

public MatExpr LessThanOrEqual(Mat m)

Parameters

m Mat

Returns

MatExpr

LessThanOrEqual(MatExpr)

operator <=

public MatExpr LessThanOrEqual(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

LessThanOrEqual(double)

operator <=

public MatExpr LessThanOrEqual(double d)

Parameters

d double

Returns

MatExpr

Max(Mat)

Per-element maximum (cv::max). Operands are materialized to Mat.

public MatExpr Max(Mat m)

Parameters

m Mat

Returns

MatExpr

Max(MatExpr)

Per-element maximum (cv::max). Operands are materialized to Mat.

public MatExpr Max(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Max(double)

Per-element maximum against a scalar value (cv::max).

public MatExpr Max(double d)

Parameters

d double

Returns

MatExpr

Min(Mat)

Per-element minimum (cv::min). Operands are materialized to Mat.

public MatExpr Min(Mat m)

Parameters

m Mat

Returns

MatExpr

Min(MatExpr)

Per-element minimum (cv::min). Operands are materialized to Mat.

public MatExpr Min(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Min(double)

Per-element minimum against a scalar value (cv::min).

public MatExpr Min(double d)

Parameters

d double

Returns

MatExpr

Mul(Mat, double)

Per-element multiplication (cv::MatExpr::mul).

public MatExpr Mul(Mat m, double scale = 1)

Parameters

m Mat
scale double

Returns

MatExpr

Mul(MatExpr, double)

Per-element multiplication (cv::MatExpr::mul).

public MatExpr Mul(MatExpr e, double scale = 1)

Parameters

e MatExpr
scale double

Returns

MatExpr

Multiply(Mat)

public MatExpr Multiply(Mat m)

Parameters

m Mat

Returns

MatExpr

Multiply(MatExpr)

public MatExpr Multiply(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Multiply(double)

public MatExpr Multiply(double s)

Parameters

s double

Returns

MatExpr

Negate()

public MatExpr Negate()

Returns

MatExpr

NotEqual(Mat)

operator !=

public MatExpr NotEqual(Mat m)

Parameters

m Mat

Returns

MatExpr

NotEqual(MatExpr)

operator !=

public MatExpr NotEqual(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

NotEqual(double)

operator !=

public MatExpr NotEqual(double d)

Parameters

d double

Returns

MatExpr

OnesComplement()

public MatExpr OnesComplement()

Returns

MatExpr

Plus()

public MatExpr Plus()

Returns

MatExpr

Row(int)

Creates a matrix header for the specified matrix row.

public MatExpr Row(int y)

Parameters

y int

Returns

MatExpr

Size()

Returns the size of the matrix. Materializes the expression.

public Size Size()

Returns

Size

SubMat(Range, Range)

Extracts a rectangular submatrix.

public MatExpr SubMat(Range rowRange, Range colRange)

Parameters

rowRange Range
colRange Range

Returns

MatExpr

SubMat(Rect)

Extracts a rectangular submatrix.

public MatExpr SubMat(Rect roi)

Parameters

roi Rect

Returns

MatExpr

SubMat(int, int, int, int)

Extracts a rectangular submatrix.

public MatExpr SubMat(int rowStart, int rowEnd, int colStart, int colEnd)

Parameters

rowStart int
rowEnd int
colStart int
colEnd int

Returns

MatExpr

Subtract(Mat)

public MatExpr Subtract(Mat m)

Parameters

m Mat

Returns

MatExpr

Subtract(MatExpr)

public MatExpr Subtract(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Subtract(Scalar)

public MatExpr Subtract(Scalar s)

Parameters

s Scalar

Returns

MatExpr

T()

Transposition (cv::MatExpr::t).

public MatExpr T()

Returns

MatExpr

ToMat()

Materializes the expression into a new Mat.

public Mat ToMat()

Returns

Mat

Type()

Returns the element type of the matrix. Materializes the expression.

public MatType Type()

Returns

MatType

Xor(Mat)

public MatExpr Xor(Mat m)

Parameters

m Mat

Returns

MatExpr

Xor(MatExpr)

public MatExpr Xor(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

Xor(double)

public MatExpr Xor(double s)

Parameters

s double

Returns

MatExpr

Operators

operator +(Mat, MatExpr)

public static MatExpr operator +(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator +(MatExpr, Mat)

public static MatExpr operator +(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator +(MatExpr, MatExpr)

public static MatExpr operator +(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator +(MatExpr, Scalar)

public static MatExpr operator +(MatExpr a, Scalar s)

Parameters

a MatExpr
s Scalar

Returns

MatExpr

operator +(Scalar, MatExpr)

public static MatExpr operator +(Scalar s, MatExpr a)

Parameters

s Scalar
a MatExpr

Returns

MatExpr

operator &(Mat, MatExpr)

public static MatExpr operator &(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator &(MatExpr, Mat)

public static MatExpr operator &(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator &(MatExpr, MatExpr)

public static MatExpr operator &(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator &(MatExpr, double)

public static MatExpr operator &(MatExpr a, double s)

Parameters

a MatExpr
s double

Returns

MatExpr

operator &(double, MatExpr)

public static MatExpr operator &(double s, MatExpr a)

Parameters

s double
a MatExpr

Returns

MatExpr

operator |(Mat, MatExpr)

public static MatExpr operator |(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator |(MatExpr, Mat)

public static MatExpr operator |(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator |(MatExpr, MatExpr)

public static MatExpr operator |(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator |(MatExpr, double)

public static MatExpr operator |(MatExpr a, double s)

Parameters

a MatExpr
s double

Returns

MatExpr

operator |(double, MatExpr)

public static MatExpr operator |(double s, MatExpr a)

Parameters

s double
a MatExpr

Returns

MatExpr

operator /(Mat, MatExpr)

public static MatExpr operator /(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator /(MatExpr, Mat)

public static MatExpr operator /(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator /(MatExpr, MatExpr)

public static MatExpr operator /(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator /(MatExpr, double)

public static MatExpr operator /(MatExpr a, double s)

Parameters

a MatExpr
s double

Returns

MatExpr

operator /(double, MatExpr)

public static MatExpr operator /(double s, MatExpr a)

Parameters

s double
a MatExpr

Returns

MatExpr

operator ^(Mat, MatExpr)

public static MatExpr operator ^(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator ^(MatExpr, Mat)

public static MatExpr operator ^(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator ^(MatExpr, MatExpr)

public static MatExpr operator ^(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator ^(MatExpr, double)

public static MatExpr operator ^(MatExpr a, double s)

Parameters

a MatExpr
s double

Returns

MatExpr

operator ^(double, MatExpr)

public static MatExpr operator ^(double s, MatExpr a)

Parameters

s double
a MatExpr

Returns

MatExpr

implicit operator Mat(MatExpr)

Materializes the expression into a new Mat.

public static implicit operator Mat(MatExpr node)

Parameters

node MatExpr

Returns

Mat

operator *(Mat, MatExpr)

public static MatExpr operator *(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator *(MatExpr, Mat)

public static MatExpr operator *(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator *(MatExpr, MatExpr)

public static MatExpr operator *(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator *(MatExpr, double)

public static MatExpr operator *(MatExpr a, double s)

Parameters

a MatExpr
s double

Returns

MatExpr

operator *(double, MatExpr)

public static MatExpr operator *(double s, MatExpr a)

Parameters

s double
a MatExpr

Returns

MatExpr

operator ~(MatExpr)

public static MatExpr operator ~(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

operator -(Mat, MatExpr)

public static MatExpr operator -(Mat a, MatExpr b)

Parameters

a Mat
b MatExpr

Returns

MatExpr

operator -(MatExpr, Mat)

public static MatExpr operator -(MatExpr a, Mat b)

Parameters

a MatExpr
b Mat

Returns

MatExpr

operator -(MatExpr, MatExpr)

public static MatExpr operator -(MatExpr a, MatExpr b)

Parameters

a MatExpr
b MatExpr

Returns

MatExpr

operator -(MatExpr, Scalar)

public static MatExpr operator -(MatExpr a, Scalar s)

Parameters

a MatExpr
s Scalar

Returns

MatExpr

operator -(Scalar, MatExpr)

public static MatExpr operator -(Scalar s, MatExpr a)

Parameters

s Scalar
a MatExpr

Returns

MatExpr

operator -(MatExpr)

public static MatExpr operator -(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr

operator +(MatExpr)

public static MatExpr operator +(MatExpr e)

Parameters

e MatExpr

Returns

MatExpr