二、矩阵操作(拷贝、洗牌、局部访问):

src.copyTo(dst)

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

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

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

dst:目的矩阵

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

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

这个命令也等价于下面的转换公式:

m(x,y) =saturate_cast(α(*this)(x,y)+β)

m.clone()

深度拷贝(啥意思?看《C++Primer》吧)

m.reshape(nch,nrows)

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

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

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

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

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

m.rowRange(Range(i1,i2))

m.colRange(Range(j1,j2))

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

m.diag(i)

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

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

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

m.repeat(ny,nx)

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

flip(src,dst,dir)

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

split(...)

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

merge(...)

和上面的操作相反。

mixChannels(...)

上面两个函数的一般形式。

randShuffle(...)

把矩阵中的元素随机重排

示例1:

Mat imgroi = image(Rect(10,20, 100, 100));

GaussianBlur(imgroi, imgroi,Size(5, 5), 1.2, 1.2);

第一句话取image的一个区域,第二句话对这个区域进行高斯平滑。

示例2:

m.row(i) +=m.row(j)*alpha;

m矩阵的第j行乘以alpha后加到第i行中。

另外,在Mat::row的介绍中提到,在目前的实现中

A.row(i) =A.row(j);

这样的语句是不行的,改成

A.row(i) = A.row(j) +0;

或者这样就可以了:

A.row(j).copyTo(A.row(i));

比较神奇~

示例3:

Rect r(1, 1, 10,20);

Mat dstroi =dst(Rect(0,10,r.width,r.height));

src(r).convertTo(dstroi,dstroi.type(), 1, 0);

第一句定义一个矩形范围,第二句从dst矩阵中扣出一个ROI区域,第三句把src矩阵中由r定义的范围转换到dstroi中。

三、简单矩阵操作

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

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

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

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

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

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

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

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

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

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

sume

20130105

[转载] OpenCV2.4.3 CheatSheet学习(二)的更多相关文章

  1. [转载] OpenCV2.4.3 CheatSheet学习(四)

    五.数据的输入和输出 1. 将数据写入YAML(或XML) 注意,在OpenCV中,无论读写,文件的格式均由指定的后缀名确定.示例: FileStorage fs("test.yml&quo ...

  2. [转载] OpenCV2.4.3 CheatSheet学习(三)

    四.图像处理(呵呵,重头戏来了) 1. 滤波 filter2D() 用核函数对图像做卷积. sepFilter2D() 用分解的核函数对图像做卷积. 首先,图像的每一行与一维的核kernelX做卷积: ...

  3. [转载] OpenCV2.4.3 CheatSheet学习(一)

    OpenCV向MATLAB靠拢,图像的操作方法变得不那么C了,更m了一些.比如,MATLAB中的常用函数imshow.imread.imwrite函数在OpenCV中已经有了同名的兄弟. 此外,Ope ...

  4. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  5. Android JNI学习(二)——实战JNI之“hello world”

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  6. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  7. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  8. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  9. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

随机推荐

  1. 二分查找总结及部分Lintcode题目分析 1

    进行二分查找课程回顾与总结,包括以下几个方面,二分法的模板总结和解题思路.应用. 二分法模板总结classical binary search: 1. 必须要做的排除极端情况,也就是数组(用A表示)不 ...

  2. JS 变量的数据类型转换

    变量的类型转换,一般情况是JS自动转换的,但也有些时候需要手动转换. 1.其它类型转成布尔型 函数和方法的区别 Boolean(a)  //函数是可以独立使用的 document.write(a)   ...

  3. latex ctex 的section不能写中文, /href

    问题描述:再使用超链接 /href 后发现section{}不能写入中文,以前是好使的,经过查询验证,需要在引导区里加入 \hypersetup{CJKbookmarks=true} 即可恢复正常.

  4. python 安装bs4

    1, 下载地址https://www.crummy.com/software/BeautifulSoup/#Download ------------------------------------- ...

  5. 19.SimLogin_case02

    # 模拟登录马蜂窝 import requests from lxml import etree session = requests.Session() phone_number = input(' ...

  6. springboot-配置多数据源(AOP实现)(HikariCP + MybatisPlus + mysql + SqlServer)

    场景: springboot项目,默认使用HikariCP连接池 + MybatisPlus持久层框架 + mysql数据库等一套流程,现需求需去第三方sqlserver数据库拉取数据,直连数据库,不 ...

  7. 面试系列八 es写入数据的工作原理

    (1)es写数据过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点) 2)coordinating node,对document进行路由,将请求 ...

  8. C++返回引用的需求

    1.重载+=操作符返回*this或者某个参数的引用可以方便链式调用,比如C++流操作就是cout<< a << b << c这样的,就是靠不停返回stream的引用 ...

  9. linux 命令 find与rm实现查找并删除目录或文件

    504  find /Volumes/WD/data/data/sg3d/server -type d |grep .svn 505  find /Volumes/WD/data/data/sg3d/ ...

  10. 1 环境搭建_及参考资料介绍_ASM驱动开发疑难解决

    1 环境搭建 > 这里和  周壑老师不同:大家觉得哪中适合当前的物理机,就配置那种. 如下: win7 32 位: vs 2010; visualDDk 驱动项目插件: V A --- 代码高亮 ...