【OpenCV】Learning OpenCV3 第五章笔记
数组操作
注意其中许多操作已经被运算符重载,比如add() 可以直接通过+完成,但因为这些函数一般都还有一个mask的可选参数,mask为0的位置不会计算输出
函数 | 简介 | code |
---|---|---|
cv::abs() | 求绝对值 | m2 = cv::abs(m0-m1) |
cv::absdiff() | 求两个矩阵之差的绝对值 | cv::absdiff(src1,src2,dst) // dst = cv::abs(src1-src2) |
cv::add() | 求两个矩阵之和 | cv::add(src1,src2,dst) // dst = src1 + src2 |
cv::addWeighted() | 带权加法 | cv::addWeighted(src1,alpha,src2,beta,gamma,dst) // dst=src1*a+src2*b+r |
cv::bitwise_and() | 执行每个元素每个bit的与操作 | cv::bitwise_and(src1,src2,dst) // dst = src1 & src2 |
cv::bitwise_not() | 逐元素逐bit的非操作 | cv::bitwise_not(src,dst) // dst = !src |
cv::bitwise_or() | 逐元素的或操作 | cv::bitwise_or(src1,src2,dst) // dst = src1 | src2 |
cv::bitwise_xor() | 亦或操作 | cv::bitwise_xor(src1,src2,dst) // dst= src1 ^ src2 |
cv::calCovarMatrix() | 计算协方差矩阵 | |
cv::cartToPolar() | 将直角坐标转化为极坐标 | |
cv::checkRange() | 检查数组中的每个数是否在范围内,不在则返回False | |
cv::compare() | 对两个数组中的元素进行逐个比较,比较的准则在P111表格5-3中可以直接通过比较运算符做到 | dst = src1 > src2;dst = src1 != src2; |
cv::completeSymm() | 填充一个对称矩阵,将下三角填到上三角,或反过来 | cv::completeSymm(src,lowerTOUpper=false) |
cv::convertScaleAbs() | 本质是四个操作,1.scale 2.offset 3.求绝对值 4.cast to char | cv::convertScaleAbs(src,dst,alpha=1.0,beta=0.0) // dst = cv::abs(alpha*src+beta) |
cv::countNonZero() | 数几个非0 | int count = cv::countNoneZero(mtx) |
cv::cvarrToMat() | 将旧版本(opencv2.1以前)的array转化为Mat | |
cv::dct() | 离散余弦变换(discrete cosine transform)之后的章节会详细介绍 | |
cv::dft() | 离散傅里叶变换(discrete Fourier transform)之后的章节会详细介绍 | |
cv::cvtColor() | 用来从在彩色空间之间做转换,灰度图转换为彩色图时,所有通道的值是一样的,反过来,则按照公式 Y = ( 0.229 ) R + ( 0.587 ) G + ( 0.114 ) B Y = (0.229)R+(0.587)G+(0.114)B Y=(0.229)R+(0.587)G+(0.114)B | |
cv::determinant() | 计算方阵的行列式 | |
cv::divide() | element-wise的除法 | cv::divide(src1,src2,dst) |
cv::eigen() | 计算特征值,特征向量 | cv::eigen(src,eigenvalues,eigenvectors) |
cv::exp() | self-explained | |
cv::extractImageCOI() | 从2.1版本前的数组中获得COI | |
cv::flip() | 翻转 | cv::flip(src,dst,flipCode) |
cv::gemm() | 广义矩阵乘法 | cv::getConvertElement()和cv::getConvertScaleElem() |
cv::idct()和cv::idft() | cv::dct(),cv::dft() 的反变换 | |
cv::inRange() | 检查输入是否在范围内 | |
cv::insertImageCOI() | 史前时代的插入channel的方法 | |
cv::invert() | 求逆矩阵 | |
cv::log | self-explained | |
cv::LUT() | lookup table transform | |
cv::magnitude() | 计算模长 | |
cv::Mahalanobis() | 马氏距离 | |
cv::max() | 逐元素计算最大值 | |
cv::mean() | 求平均值 | |
cv::meanStdDev() | 求均值和方差 | |
cv::merge() | 结合输入得到输出 | |
cv::min() | 元素计算最小值 | |
cv::minMaxIdx() | 找到最大最小值并返回其位置 | |
cv::minMaxLoc() | 同上只不过返回的是Point | |
cv::mixChannels() | 调整channel的顺序 | |
cv::mulSpectrums() | 光谱上的操作 | |
cv::multiply() | 逐元素的乘法 | |
cv::mulTransposed() | 和转置后的矩阵相乘 | |
cv::norm() | 计算矩阵的1、2、无穷范数 | |
cv::normaliza() | 与norm有类似用法 | |
cv::perspectiveTransform() | 坐标投影变换 | |
cv::phase() | 计算方位角 | |
cv::polarToCart() | 极坐标转化为笛卡尔坐标 | |
cv::pow() | 逐元素的指数运算 | |
cv::randu() | 生成均匀分布的随机数 | |
cv::randn() | 生成正态分布的随机数 | |
cv::randShuffle() | 打乱一维数组 | |
cv::reduce() | reduce to sum avg max min | |
cv::repeat() | 复制一个小的数组到一个大的数组中,直到填满大数组 | |
cv::scaleAdd() | 加法 | |
cv::setIdentity() | 获得一个对角的常值矩阵 | |
cv::solve() | 解线性方程 | |
cv::solveCubic() | 解三次方程 | |
cv::solvePoly() | 解多项式方程 | |
cv::sort() | 分别对行或列进行排序 | |
cv::sourIdx() | 类似sort | |
cv::split() | 分开得到单独的channel | |
cv::sqrt() | 逐元素开方 | |
cv::subtract() | 减 | |
cv::sum() | 对数组求和 | |
cv::trace() | 求对角线和 | |
cv::transform() | 计算线性映射 | |
cv::transpose() | 转置 |
总结
本章给出了cv::Mat
可以进行的各种操作