四. 矩阵操作
矩阵函数
输入为矩阵类型, 输出为矩阵类型, 或者输入输出同为矩阵类型.
函数名称 | 描述 |
---|---|
cv::abs() | 计算矩阵中所有元素的绝对值 |
cv::absdiff() | 计算两个矩阵 差值的绝对值 |
cv::add() | 实现两个矩阵按元素相加 |
cv::addWeighted()1 | 实现两个矩阵按元素加权求和 |
cv::bitwise_and() | 计算两个矩阵逐元素按位与 |
cv::bitwise_or() | 按位或 |
cv::bitwise_xor() | 按位异或 |
cv::bitwise_not | 按位非 |
cv::calcCovarMatrix() | 计算一组n维向量的协方差 |
cv::cartToPolar() | 计算二维向量的角度和幅度 |
cv::checkRange() | 检查矩阵的无效值 |
cv::compare() | 对两个矩阵中的所有元素应用所选择的比较运算符 |
cv::completeSymm() | 通过将一半元素复制到另一半来使矩阵对称 |
cv::convertScaleAbs() | 缩放矩阵, 取绝对值, 然后转换为8位无符号数 |
cv::countNonZero() | |
cv::arrToMat() | |
cv::dct() | |
cv::determinant() | |
cv::dft() | |
cv::divide() | |
cv::eigen() | |
cv::exp() | |
cv::extractImageCOI() | |
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() | |
cv::solve() | |
cv::solveCubic() | |
cv::solvePoly() | |
cv::sort() | |
cv::sortIdx() | |
cv::split()2 | 将一个多通道矩阵分割成多个单通道矩阵 |
cv::sqrt() | |
cv::subtract() | |
cv::sum() | |
cv::theRNG() | |
cv::trace() | |
cv::transform() | |
cv::transpose() |
cv::addWeight()
void cv::addWeight(
cv::InputArray src1, //第一个输入矩阵
double alpha, //第一个输入矩阵权重
cv::InputArrary src2, //第二个输入矩阵
double beta, //第二个输入矩阵权重
double gamma, //offset added to weighted sum
cv::OutputArray dst, //输入结果矩阵
int dtype = -1 //结果输出类型
);
此函数可以用于实现alpha混合. 参数 α \alpha α是src1的混合强度, β \beta β是src2的混合强度.
cv::split()
void cv::split(
const cv::Mat& mtx,
cv::Mat* mv
);
void cv::split(
const cv::Mat& mtx,
vector<Mat>& mv //STL类型
);
使用cv::split()将多通道矩阵中的通道分为多个单通道矩阵.
务必确保可用的cv::Mat对象的数量(至少)等于mtx中的通道数, 如果使用STL向量形式, cv::split()将为你分配结果矩阵的内存.