operations on array:数组操作。从官网上及源码上我们可以看到该模块声明了5个类、94个函数、重载了6个函数、定义了9个枚举类型。
详细链接:官网详解
absdiff:absolute difference
该函数用于计算两个矩阵或一个矩阵与一个数的差的绝对值
void cv::absdiff ( InputArray src1, InputArray src2, OutputArray dst )
src1 :
输入第一个数组或数。
src2 :
输入第二个数组或数。
dst :
输出的数组,和输入数组具有相同大小类型。
两个相同数组:dst(I)=saturate ( |src1(I)−src2(I)| )
数组与数:dst(I)=saturate ( |src1(I)−src2| )
saturate:饱和。运算结果可能会超出像素灰度值(0~255),所以当运算完后,结果为负就转为0,结果超出255,则为255.但值得注意的是,Saturation is not applied when the arrays have the depth CV_32S. You may even get a negative value in the case of overflow
矩阵加法,A+B的更高级形式,支持矩阵掩码
void cv::add (
InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray(),
int dtype = -1
)
src1 输入第一个数组或数。
src2 输入第二个数组或数。
dst 输出的数组,类型由dtype决定
mask 矩阵掩码
dtype 决定输出数组的类型
运算公式:dst(I)=saturate(src1(I)+src2(I)) if mask(I)≠0
只有mask矩阵相应位置的元素不为0时,才对src1和src2矩阵相应位置的元素求和,这就是矩阵掩码的作用。
当src1.depth()==src2.depth()时,dtype可以取默认值-1,此时输出矩阵的深度和src1,src2一样。
同样当矩阵深度为CV_32S时,无法应用saturate函数,易出现异常值。
矩阵加权加法
void cv::addWeighted
(
InputArray src1,
double alpha,
InputArray src2,
double beta,
double gamma,
OutputArray dst,
int dtype = -1
)
src1 输入第一个矩阵
alpha 第一个矩阵元素的权重
src2 输入第二个矩阵(和第一个矩阵具有相同大小和通道数)
beta 第二个矩阵元素的权重
gamma 权重和加上一个标量
dst 输出矩阵(和输入矩阵具有相同大小和通道数)
dtype 设置输出矩阵的深度
同样当矩阵深度为CV_32S时,无法应用saturate函数,易出现异常值。
朴素最邻近查找
void cv::batchDistance
(
InputArray src1,
InputArray src2,
OutputArray dist,
int dtype,
OutputArray nidx,
int normType = NORM_L2,
int K = 0,
InputArray mask = noArray(),
int update = 0,
bool crosscheck = false
)
矩阵位运算-和运算
void cv::bitwise_and
(
InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray()
)
src1 输入第一个数组或数。
src2 输入第二个数组或数。
dst 输出的数组
mask 矩阵掩码
矩阵位运算-取反运算
void cv::bitwise_not
(
InputArray src,
OutputArray dst,
InputArray mask = noArray()
)
矩阵位运算-或运算
void cv::bitwise_or
(
InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray()
)
矩阵位运算-异或运算
void cv::bitwise_xor
(
InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray()
)
计算扩充边界像素对应于原图中的坐标
int cv::borderInterpolate
(
int p,
int len,
int borderType
)
p 扩充边缘的像素的坐标(横坐标或者纵坐标)
len 原图中的坐标
borderType 扩充边缘的类型,就是外插的类型
该函数通常不单独使用,通常用于滤波算法和copyMakeBorder函数
详见链接
扩充边缘的的类型,就是外插的类型,opencv给出了几种方式
/*
Various border types, image boundaries are denoted with '|'
* BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
* BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
* BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
* BORDER_WRAP: cdefgh|abcdefgh|abcdefg
* BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii with some specified 'i'
*/
BORDER_REPLICATE:复制法,也就是复制最边缘像素。
BORDER_REFLECT_101:对称法,也就是以最边缘像素为轴,对称。
BORDER_CONSTANT:常量法
calculate the coveriance matrix
计算协方差阵
void cv::calcCovarMatrix
(
const Mat * samples,
int nsamples,
Mat & covar,
Mat & mean,
int flags,
int ctype = CV_64F
)
samples 输入的向量集,它们可以是若干个同样形式的向量组成,也可以是一个矩阵的若干行组成
nsamples 输入的向量的数目
covar 输出的协方差矩阵
mean 输出的均值矩阵
flags 操作标志
ctype 矩阵类型默认为CV_64F
详见链接
计算协方差阵
void cv::calcCovarMatrix
(
InputArray samples,
OutputArray covar,
InputOutputArray mean,
int flags,
int ctype = CV_64F
)
计算二维向量的大小和角度
void cv::cartToPolar
(
InputArray x,
InputArray y,
OutputArray magnitude,
OutputArray angle,
bool angleInDegrees = false
)
X 阵列的X坐标;这必须是一个单精度和双精度浮点数组。
Y 阵列的y坐标,必须有相同的尺寸和相同的X。
magnitude 对同一类型和尺寸的大小输出数组x。
angle 阵列输出的角度,有如X相同的尺寸和类型;角度测量弧度(从0到2 * pi ) 或度(0到360度)。
angleindegrees 一个标志,指示测量度还是弧度(这是默认的)
检查矩阵的每个元素的取值是否在最小值与最大值之间,返回验证结果bool
bool cv::checkRange
(
InputArray a,
bool quiet = true,
Point * pos = 0,
double minVal = -DBL_MAX,
double maxVal = DBL_MAX
)
a 输入一个数组
quiet 标志,当数组元素越界时,指示函数是悄然返回一个错误还是抛出一个异常
pos 可选参数,
minVal 最小值
maxVal 最大值
返回逐个元素比较结果的矩阵
void cv::compare
(
InputArray src1,
InputArray src2,
OutputArray dst,
int cmpop
)
src1 输入地一个数组
src2 输入第二个数组
dst 输出一个和输入数组相同类型大小的CV_8U 数组
cmpop 一个标志,指定阵列之间的对应关系
dst(I)=src1(I) cmpop src2(I)
如果比较结果为真,输出数组对应位置为255.
将矩阵下三角拷贝到上三角或将上三角拷贝到下三角
void cv::completeSymm
(
InputOutputArray mtx,
bool lowerToUpper = false
)
mtx 输入、输出浮点矩阵。
lowerToUpper 操作标志;如果是真的,下半部分是复制到上半。否则,上半部分是复制到下半
先缩放元素再取绝对值,最后转换格式为8bit型
void cv::convertScaleAbs
(
InputArray src,
OutputArray dst,
double alpha = 1,
double beta = 0
)
src 输入数组
dst 输出数组
alpha 可选的缩放因子
beta 可选的加上一个标量值
计算方式:
dst(I)=saturate_cast( |src(I)∗alpha+beta| )
在图像周围形成一个边界
void cv::copyMakeBorder
(
InputArray src,
OutputArray dst,
int top,
int bottom,
int left,
int right,
int borderType,
const Scalar & value = Scalar()
)
src 源图像
dst 目标图像,与源图像具有相同类型,大小为Size(src.cols+left+right, src.rows+top+bottom) .
top
bottom
left
right 上下左右各边扩展的距离
bordertype 边界类型
value
统计非零值个数
int cv::countNonZero
(
InputArray src
)
返回src矩阵中非零元素的数量
正、逆离散余弦变换
void cv::dct
(
InputArray src,
OutputArray dst,
int flags = 0
)
src 源数组
dst 目标数组
flags 转换标志
一位数组n个元素的余弦逆变换
如果(flags和dct_inverse)= = 0,函数做了一维或二维正变换。否则,这是一个一维或二维逆变换。
如果(flags和dct_rows)!= 0,函数执行一个一维的每行变换。
如果数组是一列或一行,该函数执行一维变换。
如果以上都不是真的,这个函数执行一个二维变换。
计算并返回行列式
double cv::determinant
(
InputArray mtx
)
返回一个浮点方形行列式
一维或二维浮点数组的正、逆离散傅立叶变换
void cv::dft
(
InputArray src,
OutputArray dst,
int flags = 0,
int nonzeroRows = 0
)
src 原数组,可以是实数也可以是复数
dst 输出数组,类型和大小决定于参数flags
flags 转换标志
nonzeroRows
矩阵逐元素除法,支持矩阵掩码
void cv::divide
(
InputArray src1,
InputArray src2,
OutputArray dst,
double scale = 1,
int dtype = -1
)
src1 源数组1
src2 源数组2(与1有相同大小和类型)
dst 输出数组
scale 标量因子
dtype 输出深度可选;=-1,dst为2的深度;当1,2深度相同时,只能令其为-1
dst(I) = saturate(src1(I)*scale/src2(I))
注意:
Saturation is not applied when the output array has the depth CV_32S
矩阵逐元素除法重载
void cv::divide
(
double scale,
InputArray src2,
OutputArray dst,
int dtype = -1
)
计算对称矩阵的特征值eigenvalues和特征向量eigenvectors
bool cv::eigen
(
InputArray src,
OutputArray eigenvalues,
OutputArray eigenvectors = noArray()
)
src 源矩阵( CV_32FC1 or CV_64FC1 type,square size ,是对称矩阵)
eigenvalues 特征值
eigenvectors 特征向量
求每个矩阵元素 src(I) 的自然数 e 的 src(I) 次幂
void cv::exp
(
InputArray src,
OutputArray dst
)
从源数组中提取一个单通道数组
void cv::extractChannel
(
InputArray src,
OutputArray dst,
int coi
)
返回非零像素的位置列表
void cv::findNonZero
(
InputArray src,
OutputArray idx
)
矩阵翻转
void cv::flip
(
InputArray src,
OutputArray dst,
int flipCode
)
flipCode 翻转标志
flipCode=0,绕x轴翻转
flipCode<0,绕y轴翻转
flipCode>0,绕xy轴翻转
一个广义的矩阵乘法操作
void cv::gemm
(
InputArray src1,
InputArray src2,
double alpha,
InputArray src3,
double beta,
OutputArray dst,
int flags = 0
)
返回一个优化过的DFT大小
int cv::getOptimalDFTSize
(
int vecsize
)
横向连接矩阵
void cv::hconcat
(
const Mat * src,
size_t nsrc,
OutputArray dst
)
nsrc 源数组里矩阵的个数
cv::Mat matArray[] = { cv::Mat(4, 1, CV_8UC1, cv::Scalar(1)),
cv::Mat(4, 1, CV_8UC1, cv::Scalar(2)),
cv::Mat(4, 1, CV_8UC1, cv::Scalar(3)),};
cv::Mat out;
cv::hconcat( matArray, 3, out );
//out:
//[1, 2, 3;
// 1, 2, 3;
// 1, 2, 3;
// 1, 2, 3]
横向连接矩阵重载
void cv::hconcat
(
InputArray src1,
InputArray src2,
OutputArray dst
)
横向连接矩阵重载
void cv::hconcat
(
InputArrayOfArrays src,
OutputArray dst
)
计算一维或二维阵列的离散余弦逆变换#### 3.34.2 函数声明 ####
void cv::idct
(
InputArray src,
OutputArray dst,
int flags = 0
)
计算一维或二维阵列的离散傅里叶逆变换
void cv::idft
(
InputArray src,
OutputArray dst,
int flags = 0,
int nonzeroRows = 0
)
检查元素的取值范围是否在另两个矩阵的元素取值之间,返回验证矩阵
void cv::inRange
(
InputArray src,
InputArray lowerb,
InputArray upperb,
OutputArray dst
)
src 输入数组。
lowerb 下边界数组或标量。
upperb 上边界数组或标量。
dst 输出数组的大小相同的Src和cv_8u型。
是就置为255,否则为0.
插入一个单通道
void cv::insertChannel
(
InputArray src,
InputOutputArray dst,
int coi
)
矩阵的逆或者伪逆
double cv::invert
(
InputArray src,
OutputArray dst,
int flags = DECOMP_LU
)
src input floating-point M x N matrix.
dst output matrix of N x M size and the same type as src.
flags inversion method (cv::DecompTypes)
求每个矩阵元素的自然对数
void cv::log
(
InputArray src,
OutputArray dst
)
查表变换look up table
void cv::LUT
(
InputArray src,
InputArray lut,
OutputArray dst
)
lut 表,查找表
其实查询表的实质就是:把图像中的数据从之前的比较高的灰度级降下来,例如灰度级是256的char类型的灰度级,我们通过一个参数(例如上述程序中就是100),将原来的256个灰度级降到了3个灰度级,原来图像中灰度值在0-100的数据现在灰度值变成了0,原来灰度值为101-200的图像数据现在灰度值变为了1,而201-256的灰度值就变为了2。所以通过参数100,图像的灰度级就到了2,只有0,1,2三个灰度值,那么原来的图像矩阵中的每一位数据我们是char型的,需要8位来表示一个数据,而灰度级降下来之后,我们只需要2位就足以表示所有灰度值
根据源图像(img)中的像素值例如灰度值是78,然后去查询表中去找它对应的是哪个灰度值(对于上面的程序78在查询表中对应的灰度值是0),然后把查询表中78对应的灰度值0赋值给新的图像矩阵(out)中。
计算二维向量的长度
void cv::magnitude
(
InputArray x,
InputArray y,
OutputArray magnitude
)
Mahalanobis距离计算
double cv::Mahalanobis
(
InputArray v1,
InputArray v2,
InputArray icovar
)
icovar 逆协方差矩阵
#### 3.42.4 函数说明####
求每个元素最大值返回这个矩阵
void cv::max
(
InputArray src1,
InputArray src2,
OutputArray dst
)
dst(I)=max(src1(I),src2(I))
求每个元素的最大值返回这个矩阵
void cv::max
(
const Mat &
src1,
const Mat &
src2,
Mat &
dst
)
求每个元素的最大值返回这个矩阵重载
void cv::max
(
const UMat & src1,
const UMat & src2,
UMat & dst
)
求均值(mean)
Scalar cv::mean
(
InputArray src,
InputArray mask = noArray()
)
均值和标准差
void cv::meanStdDev
(
InputArray src,
OutputArray mean,
OutputArray stddev,
InputArray mask = noArray()
)
多个单通道矩阵合成一个多通道矩阵
void cv::merge
(
const Mat * mv,
size_t count,
OutputArray dst
)
多个单通道矩阵合成一个多通道矩阵 重载
void cv::merge
(
InputArrayOfArrays mv,
OutputArray dst
)
求每个元素的最小值返回这个矩阵
void cv::min
(
InputArray src1,
InputArray src2,
OutputArray dst
)
求每个元素的最小值返回这个矩阵
void cv::min
(
const Mat & src1,
const Mat & src2,
Mat & dst
)
求每个元素的最小值返回这个矩阵
void cv::min
(
const UMat & src1,
const UMat & src2,
UMat & dst
)
在一个数组中找到全局最小值和最大值
void cv::minMaxIdx
(
InputArray src,
double * minVal,
double * maxVal = 0,
int * minIdx = 0,
int * maxIdx = 0,
InputArray mask = noArray()
)
src 输入单通道数组
minVal 指向最小值,NULL is used if not required.
maxVal 指向最大值,
minIdx 指向最小值的位置
maxIdx 指向最大值的位置
mask 矩阵掩码
在一个数组中找到全局最小值和最大值
void cv::minMaxLoc
(
InputArray src,
double * minVal,
double * maxVal = 0,
Point * minLoc = 0,
Point * maxLoc = 0,
InputArray mask = noArray()
)
在一个数组中找到全局最小值和最大值 重载
void cv::minMaxLoc
(
const SparseMat & a,
double * minVal,
double * maxVal,
int * minIdx = 0,
int * maxIdx = 0
)
从输入数组复制指定的通道到输出阵列。
void cv::mixChannels
(
const Mat * src,
size_t nsrcs,
Mat * dst,
size_t ndsts,
const int * fromTo,
size_t npairs
)
src 输入矩阵的向量(可以理解成一队矩阵),所有矩阵必须有相同的大小和深度。
nsrcs 输入矩阵的个数。
dst 输出矩阵的向量。所有的矩阵必须事先分配空间(如用create),大小和深度须与输入矩阵等同
fromTo 序号对向量,用来决定哪个通道被拷贝。偶数下标的用来标识输入矩阵,奇数下标的用来标识输出矩阵。如果偶数下标为负数,那么相应的输出矩阵为零矩阵
npairs fromTo中的序号对数(两个算1对)。
举例如下
Mat bgra( 100, 100, CV_8UC4, Scalar(255,0,0,255) );
Mat bgr( bgra.rows, bgra.cols, CV_8UC3 );
Mat alpha( bgra.rows, bgra.cols, CV_8UC1 );
// forming an array of matrices is a quite efficient operation,
// because the matrix data is not copied, only the headers
Mat out[] = { bgr, alpha };
// bgra[0] -> bgr[2], bgra[1] -> bgr[1],
// bgra[2] -> bgr[0], bgra[3] -> alpha[0]
int from_to[] = { 0,2, 1,1, 2,0, 3,3 };
mixChannels( &bgra, 1, out, 2, from_to, 4 );
mixChannels主要就是把输入的矩阵(或矩阵数组)的某些通道拆分复制给对应的输出矩阵(或矩阵数组)的某些通道中,其中的对应关系就由fromTo参数制定.
从输入数组复制指定的通道到输出阵列。 重载
void cv::mixChannels
(
InputArrayOfArrays src,
InputOutputArrayOfArrays dst,
const int * fromTo,
size_t npairs
)
从输入数组复制指定的通道到输出阵列。 重载
void cv::mixChannels
(
InputArrayOfArrays src,
InputOutputArrayOfArrays dst,
const std::vector< int > & fromTo
)
两个傅立叶频谱间逐元素的乘法
void cv::mulSpectrums
(
InputArray a,
InputArray b,
OutputArray c,
int flags,
bool conjB = false
)
矩阵逐元素乘法
void cv::multiply
(
InputArray src1,
InputArray src2,
OutputArray dst,
double scale = 1,
int dtype = -1
)
计算数组和数组的转置的乘积
void cv::mulTransposed
(
InputArray src,
OutputArray dst,
bool aTa,
InputArray delta = noArray(),
double scale = 1,
int dtype = -1
)
src 输入矩阵
dst 目标矩阵
aTa 乘法顺序
delta 一个可选数组, 在乘法之前从 src 中减去该数组。
计算绝对阵范数,绝对差分模,或相对差的范数。
double cv::norm
(
InputArray src1,
int normType = NORM_L2,
InputArray mask = noArray()
)
计算绝对阵范数,绝对差分模,或相对差的范数。 重载
double cv::norm
(
InputArray src1,
InputArray src2,
int normType = NORM_L2,
InputArray mask = noArray()
)
计算绝对阵范数,绝对差分模,或相对差的范数。 重载
double cv::norm
(
const SparseMat & src,
int normType
)
归一化
void cv::normalize
(
InputArray src,
InputOutputArray dst,
double alpha = 1,
double beta = 0,
int norm_type = NORM_L2,
int dtype = -1,
InputArray mask = noArray()
)
src 输入矩阵
dst 归一化后的矩阵
dtype 当小于零时,输出矩阵和输入矩阵有相同的数据类型;否则该值表示输出矩阵的数据类型
mask 矩阵掩码
该函数可进行不同类型的归一化操作:
1、norm_type=NORM_MINMAX
dst的最小值为alpha,dst的最大值为beta。
2、norm_type=NORM_INF, NORM_L1, or NORM_L2
dst为src的无穷范数、1范数和2范数。
归一化 重载
void cv::normalize
(
const SparseMat & src,
SparseMat & dst,
double alpha,
int normType
)
将一个非数值转化成给定的值
void cv::patchNaNs
(
InputOutputArray a,
double val = 0
)
wrap PCA::backProject
void cv::PCABackProject
(
InputArray data,
InputArray mean,
InputArray eigenvectors,
OutputArray result
)
wrap PCA::operator()
void cv::PCACompute
(
InputArray data,
InputOutputArray mean,
OutputArray eigenvectors,
int maxComponents = 0
)
wrap PCA::operator()
void cv::PCACompute
(
InputArray data,
InputOutputArray mean,
OutputArray eigenvectors,
double retainedVariance
)
wrap PCA::project
void cv::PCAProject
(
InputArray data,
InputArray mean,
InputArray eigenvectors,
OutputArray result
)
透视变换
void cv::perspectiveTransform
(
InputArray src,
OutputArray dst,
InputArray m
)
透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。
http://blog.csdn.net/xiaowei_cqu/article/details/26471527
计算二维向量的旋转角度。
void cv::phase
(
InputArray x,
InputArray y,
OutputArray angle,
bool angleInDegrees = false
)
从二维向量的幅值magnitude和角度angle计算它的xy坐标
void cv::polarToCart
(
InputArray magnitude,
InputArray angle,
OutputArray x,
OutputArray y,
bool angleInDegrees = false
)
Raises every array element to a power
void cv::pow
(
InputArray src,
double power,
OutputArray dst
)
computes PSNR image/video quality metric
double cv::PSNR
(
InputArray src1,
InputArray src2
)
构造正态分布随机数的数组
void cv::randn
(
InputOutputArray dst,
InputArray mean,
InputArray stddev
)
dst 输出数组
mean 产生随机数的平均值
stddev 产生随机数的标准差
将原数组(矩阵)打乱
void cv::randShuffle
(
InputOutputArray dst,
double iterFactor = 1.,
RNG * rng = 0
)
dst 输入输出数组(一维)
iterFactor 决定交换数值的行列的位置的一个系数
rng (可选)随机数产生器,0表示使用默认的随机数产生器,即seed=-1。rng决定了打乱的方法
返回均匀分布的随机数,填入数组或矩阵
void cv::randu
(
InputOutputArray dst,
InputArray low,
InputArray high
)
dst 输出数组或矩阵
low 区间下界(闭区间)
high 区间上界(开区间)
将矩阵压缩为一个向量
void cv::reduce
(
InputArray src,
OutputArray dst,
int dim,
int rtype,
int dtype = -1
)
矩阵拷贝的时候指定按x/y方向重复
void cv::repeat
(
InputArray src,
int ny,
int nx,
OutputArray dst
)
矩阵拷贝的时候指定按x/y方向重复 重载
Mat cv::repeat
(
const Mat & src,
int ny,
int nx
)
矩阵计算
void cv::scaleAdd
(
InputArray src1,
double alpha,
InputArray src2,
OutputArray dst
)
dst(I)=alpha⋅src1(I)+src2(I)
初始化一个刻度单位矩阵
void cv::setIdentity
(
InputOutputArray mtx,
const Scalar & s = Scalar(1)
)
MTX 矩阵初始化(不一定是正方形)
S 指定对角元素值
解决了一个或多个线性系统或最小二乘问题
bool cv::solve
(
InputArray src1,
InputArray src2,
OutputArray dst,
int flags = DECOMP_LU
)
找到一元三次方程的真正的根
int cv::solveCubic
(
InputArray coeffs,
OutputArray roots
)
找到多项式方程的实根或复根
double cv::solvePoly
(
InputArray coeffs,
OutputArray roots,
int maxIters = 300
)
maxiters 迭代算法的最大数量
给矩阵的列或行排序
void cv::sort
(
InputArray src,
OutputArray dst,
int flags
)
给矩阵的列或行排序
void cv::sortIdx
(
InputArray src,
OutputArray dst,
int flags
)
将一个多通道数组分成几个单通道数组
void cv::split
(
const Mat & src,
Mat * mvbegin
)
将一个多通道数组分成几个单通道数组 重载
void cv::split
(
InputArray m,
OutputArrayOfArrays mv
)
计算数组元素的平方根
void cv::sqrt
(
InputArray src,
OutputArray dst
)
矩阵之差
void cv::subtract
(
InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray(),
int dtype = -1
)
数组元素之和
Scalar cv::sum
(
InputArray src
)
wrap SVD::backSubst
void cv::SVBackSubst
(
InputArray w,
InputArray u,
InputArray vt,
InputArray rhs,
OutputArray dst
)
wrap SVD::compute
void cv::SVDecomp
(
InputArray src,
OutputArray w,
OutputArray u,
OutputArray vt,
int flags = 0
)
返回默认的随机数发生器
Returns the trace of a matrix
Scalar cv::trace
(
InputArray mtx
)
执行每个数组元素的矩阵变换
void cv::transform
(
InputArray src,
OutputArray dst,
InputArray m
)
dst(I)=m⋅src(I)
转置矩阵
void cv::transpose
(
InputArray src,
OutputArray dst
)
垂直连接矩阵
void cv::vconcat
(
const Mat * src,
size_t nsrc,
OutputArray dst
)
垂直连接矩阵 重载
void cv::vconcat
(
InputArray src1,
InputArray src2,
OutputArray dst
)
垂直连接矩阵 重载
void cv::vconcat
(
InputArrayOfArrays src,
OutputArray dst
)