OpenCV的矩阵操作

opencv中矩阵的基本操作:拷贝,转换,改变尺寸,创建矩阵头,局部提取,反转,分解合并通道,其他一些数学相关的操作。

cv::Mat src,dst,m

1)src.copyTo(dst)

把src矩阵中的数据拷贝到dst。

2)m.clone()

深度拷贝。

3)src.convertTo(dst, type, scale, shift)

缩放并转换到另外一种数据类型:

dst:目的矩阵

type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值(常用-1)则输出矩阵和输入矩阵类型相同

scale和shift:缩放参数,也可以写为alpha和beta

这个函数等价于下面的转换公式:m(x,y) = saturate_cast(α(*this)(x,y)+β)。

4)m.reshape(nch,nrows)

重设矩阵的通道数和行数,不拷贝数据。

nch:新的通道数,若为0则不变

nrows:新的行数,若为0则不变

5)m.row(i), m.col(i)

创建一个矩阵头,指向m矩阵的第i行/列,O(1)复杂度,不拷贝数据,新的矩阵头所代表的矩阵和m矩阵的第i行/列共享数据。

6)m.rowRange(Range(i1,i2))

m.colRange(Range(j1,j2))

创建一个矩阵头,指向m矩阵的第i1到i2行或者第j1到j2列,O(1)复杂度,不拷贝数据。

7)m.diag(i)

创建一个矩阵头,指向m矩阵的对角线,生成的是一个单列矩阵,O(1)复杂度,不拷贝数据。i=0时表示主对角线,i>0表示下半边的对角线,i<0表示上半边的对角线。

8)m(Range(i1,i2),Range(j1,j2))

从矩阵m中的第i1行到第i2行以及第j1列到第j2列所划定的范围提取一个小矩阵。

类似于画矩形框取区域:Mat image(Rect(10, 20, 100, 100));

9)m.repeat(ny,nx)

把m矩阵贴马赛克,获取一个大矩阵,在y方向上重复ny次,在x方向上重复nx次。

10)flip(src,dst,dir)

翻转矩阵,dir是翻转方向,0表示沿x轴翻转,1表示沿y轴翻转,-1表示沿x轴和y轴都进行翻转。

11)split(...)

把一个多通道矩阵分解为几个单通道矩阵,操作RGB图像之类的最常用。

12)merge(...)

和上面的操作相反。

mixChannels(...),上面两个函数的一般形式。

13)randShuffle(...)

把矩阵中的元素随机重排。

14)add(), subtract(), multiply(), divide(), absdiff(), bitwiseand(), bitwiseor(), bitwisexor(), max(), min(), compare()

分别是加减乘除、按位与或异或、最大最小之类的。

15)sum(), mean(), meanStdDev(), norm(), countNonZero(), minMaxLoc()

求和、均值、均值方差、矩阵范数、非零个数、最大最小值。

16)exp(), log(), pow(), sqrt(), cartToPolar(), polarToCart()

指数、对数、乘方、开放、极坐标转换。

17)scaleAdd(), transpose(), gemm(), invert(), solve(), determinant(), trace(), eigen(), SVD

线性组合、转置、广义矩阵乘法、矩阵求逆、解线性系统或最小二乘问题、计算行列式、矩阵的迹、计算对称矩阵的特征值和特征向量、奇异值分解。

18)dft(), idft(), dct(), idct()

离散傅立叶变换、离散余弦变换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值