学习OpenCV3——第五章:矩阵操作

一、矩阵还可以做很多事情

由前面的章节可知,矩阵类的成员函数可以进行很多基本的操作。然而,除此以外,也有很多操作被表示为“友元”函数,它们的输入为矩阵类型,或者输出为矩阵类型,或者输入输出同为矩阵类型。这些函数及其参数将在表5-1介绍。

表5-1:基本的矩阵和图像算子
函数名称 描述
cv::abs() 计算矩阵中所有元素的绝对值
cv::absdiff() 计算两个矩阵差值的绝对值
cv::add() 实现两个矩阵逐元素相加
cv::addWeighted 实现两个矩阵逐元素加权求和(alpha blending)
cv::bitwise_and 计算两个矩阵逐元素按位与
cv::bitwise_not 计算两个矩阵逐元素按位非
cv::bitwise_or 计算两个矩阵逐元素按位或
cv::bitwise_xor 计算两个矩阵逐元素按位异或
cv::calcCovarMatrix() 计算一组n维向量的协方差
cv::cartToPolar() 计算二维向量的角度和幅度
cv::checkRange() 检查矩阵的无效值
cv::compare() 对两个矩阵中的所有元素应用所选择的比较运算符
cv::completeSymm() 通过将一半元素复制到另一半来使矩阵对称
cv::convertScaleAbs() 缩放矩阵,取绝对值,然后转换为8位无符号数
cv::countNonZero() 计算矩阵中非零元素个数
cv::arrToMat() 将2.1版本的矩阵类型转换为cv::Mat
cv::dct() 计算矩阵的离散余弦变换
cv::determinant() 计算方阵的行列式
cv::dft() 计算矩阵的离散傅里叶变换
cv::divide() 实现两个矩阵逐元素相除
cv::eigen() 计算方阵的特征值和特征向量
cv::exp() 实现矩阵的逐元素求指数幂
cv::extractImageCOI() 从2.1版本的矩阵类型中提取单个通道
cv::flip() 绕选定的轴翻转矩阵
cv::gemm() 实现广义矩阵乘法
cv::getConvertElem() 获取单像素类型转换函数
cv::getConvertScaleElem() 获取单像素类型的转换和缩放函数
cv::idct() 计算矩阵的离散余弦逆变换
cv::idft() 计算矩阵的离散傅里叶逆变换
cv::inRange() 测试矩阵的元素是否再两个其他矩阵的值之间
cv::invert() 求方阵的逆
cv::log() 计算矩阵逐元素的自然对数
cv::magnitude() 计算二维向量的幅度
cv::LUT() 将矩阵转换为查找表的索引
cv::Mahalanobis() 计算两个向量之间的马氏距离
cv::max() 计算两个矩阵逐元素的最大值
cv::mean() 计算矩阵元素的平均值
cv::meanStdDev() 计算矩阵元素的均值和和标准差
cv::merge() 将多个单通道矩阵合并成一个多通道矩阵
cv::min() 计算两个矩阵逐元素的最小值
cv::minMaxLoc() 在矩阵中寻找最小值和最大值
cv::mixChannels() 打乱从输入矩阵到输出矩阵的通道
cv::mulSpectrums() 计算两个傅里叶谱的逐元素乘积
cv::multiply() 计算两个矩阵的逐元素乘积
cv::mulTransposed() 计算矩阵和矩阵的转置的乘积
cv::norm() 计算两个矩阵的归一化相关系数
cv::normalize() 将矩阵中的元素标准化到某一数值内
cv::perspectiveTransform() 实现一系列向量的透视矩阵变化
cv::phase() 计算二维向量的方向
cv::polarToCart() 已知角度和幅度,求出对应的二维向量
cv::pow() 对矩阵内的每个元素求幂
cv::randu() 用均匀分布的随机数填充给定的矩阵
cv::randn() 用正态分布的随机数填充给定的矩阵
cv::randShuffle() 随机打乱矩阵元素
cv::reduce() 通过特定的操作将二维矩阵缩减为向量
cv::repeat() 将一个矩阵的内容复制到另一个矩阵
cv::saturate_cast<>() 转换原始类型(模板函数)
cv::scaleAdd() 逐元素计算两个矩阵的和并且第一个矩阵可以选择缩放
cv::setIdentity() 将矩阵中对角线上的元素设为1,其他置0
0cv::solve() 求出线性方程的解
cv::solveCubic() 找到(唯一的)三次方程的解
cv::solvePoly() 找到多项式方程的复根
cv::sort() 在矩阵中排序任意行或列的元素
cv::sortIdx() 与cv::sort()的目的相同,除了矩阵是未修改的,并返回索引
cv::split() 将一个多通道矩阵分割成多个单通道矩阵
cv::sqrt() 计算矩阵逐元素的平方根
cv::subtract() 实现两个矩阵逐元素相减
cv::sum() 对矩阵中的所有元素求和
cv::theRNG() 返回随机数生成器
cv::trace() 计算一个矩阵的迹
cv::transform() 在矩阵的每个元素上应用矩阵变换
cv::transpose() 矩阵的转置运算

 

具体使用实例可自行百度。

二、小结

在本章中,我们介绍了利用OpenCV最重要的矩阵结构cv::Mat可以完成的大量基本操作,包括矩阵、图像、和多维矩阵等。

你可能感兴趣的:(学习OpenCV3)