opencv图像处理和矩阵相关运算

一、图像处理函数

Mat 类

Mat 是一个基本图像容器,也是一个类,数据由两个部分组成:
矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所
选存储方法的不同矩阵可以是不同的维数)的指针。

imread()
Mat imread( const String& filename, int flags = IMREAD_COLOR );

功能:读取图片文件中的数据
参数:

filename:图片路径
flags:指定读取图片的颜色类型,注意:opencv 版本不同,宏可能不一样 opencv3.2.0 中
IMREAD_GRAYSCALE 值为 0,表示显示灰度图
IMREAD_COLOR 值为 1,表示显示原图
imshow()
void imshow(const String& winname, InputArray mat);

功能:显示照片
参数:

winname:显示照片窗口的名称
mat:imread 的返回值
锐化

对像素邻域进行计算时,通常用一个核心矩阵来表示。这个核心矩阵展现了如何将与计算相关的像素组合起来,才能得到预期结果。
当前像素用核心矩阵中心单元格表示,又叫卷积核或相关核,核心矩阵中的每个单元格表示相关像素的乘法系数,结果像素通过核心矩阵得到的结果,即是这些乘积的累加。核心矩阵的大小就是邻域的大小(这里是 3×3),计算过程如下:
卷积运算

filter2D()
void filter2D( InputArray src, OutputArray dst, int ddepth, InputArray kernel,Point anchor
= Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT );

功能:通过给定卷积核对图像进行滤波处理
参数:

src:源图像
dst:与 src 相同大小、相同通道数的输出图像
ddepth:目标图像期望的深度(一般保持和源图像一致)
kernel:构造核心矩阵内核(协同图像传入 filter2D)
delta:选填过滤后的像素(一般取缺省值 0)
borderType:边框(一般取缺省值 BORDER_DEFAULT)
图像混合

像素混合接口 void addWeighted()

void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma,
OutputArray dst, int dtype = -1);

功能:图像合并处理,合并图片
参数:

src1: 源图像 1
alpha: 图像的权重(0~1 之间)
src2: 源图像 2
beta: 第二张源图像的权重(一般为 1.0-alpha)
gamma: 如果两张相加后亮度不理想 可以使用 gamma 使其亮度效果更好,设置亮度
dst: 两张图像输出的目标图像
dtype: 使用缺省值

二、运算函数

计算协方差calcCovarMatrix
Mat samples = (Mat_<double>(5, 3) << 90, 60, 90, 90, 90, 30, 60, 60, 60, 60, 60, 90,
30, 30, 30);
Mat cov, mu;
//mu:保存均值
//cov:保存协方差
calcCovarMatrix(samples, cov, mu, CV_COVAR_NORMAL | CV_COVAR_ROWS);  //CV_COVAR_COLS
计算均值和标准差meanStdDev
//means:保存均值
//stddev:保存标准差
Mat means, stddev;
meanStdDev(image,means,stddev);
计算特征值和特征向量 eigen

特征值与特征向量表达了一个线性变换的特征,特征向量将一个矩阵进行正交分解,判断出在哪些方向只拉伸不扭曲来简化计算量,得到了特征值与特征向量就是得到了某个矩阵导致的伸缩比例和伸缩方向,其目的主要用于降维。

Mat eigen_values, eigen_vector;
/********************************
 * bool eigen(InputArray src, OutputArray eigenvalues, OutputArray eigenvectors = noArray());
 * 功能:获取特征值和特征向量
 * 参数:
 *      src:原图或者数据
 *      eigenvalues:特征值
 *      eigenvectors:特征向量
 * ******************************/
eigen(data, eigen_values, eigen_vector);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值