[转载] OpenCV2.4.3 CheatSheet学习(二)
二、矩阵操作(拷贝、洗牌、局部访问):
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学习(二)的更多相关文章
- [转载] OpenCV2.4.3 CheatSheet学习(四)
五.数据的输入和输出 1. 将数据写入YAML(或XML) 注意,在OpenCV中,无论读写,文件的格式均由指定的后缀名确定.示例: FileStorage fs("test.yml&quo ...
- [转载] OpenCV2.4.3 CheatSheet学习(三)
四.图像处理(呵呵,重头戏来了) 1. 滤波 filter2D() 用核函数对图像做卷积. sepFilter2D() 用分解的核函数对图像做卷积. 首先,图像的每一行与一维的核kernelX做卷积: ...
- [转载] OpenCV2.4.3 CheatSheet学习(一)
OpenCV向MATLAB靠拢,图像的操作方法变得不那么C了,更m了一些.比如,MATLAB中的常用函数imshow.imread.imwrite函数在OpenCV中已经有了同名的兄弟. 此外,Ope ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Android JNI学习(二)——实战JNI之“hello world”
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
随机推荐
- 大数据和BI商业智能有何区别?有何相关
大数据和BI商业智能有何区别?有何相关 大数据 ≠BI商业智能,大数据也不是传统商业智能的简单升级. 1.大数据和BI两者的区别 BI(BusinessIntelligence)即商业智能,它是企业数 ...
- 搞大数据,你不懂这三大数据处理趋势就OUT了
搞大数据,你不懂这三大数据处理趋势就OUT了 企业数据每年以PB级甚至上百PB爆炸式增长,越来越大的数据量正为扩大分析策略在企业应用软件领域的拓展提供了数据基础,但数据的价值是有时效性的,越早分析越能 ...
- hexo next主题深度优化(十),博文加密,不需要插件,极简模式,相对安全,融合pjax。
文章目录 效果: 代码: 注意: 背景: 思路: https://www.jianshu.com/p/90c0a15c6f36 http://zhailiange.com/2017/07/06/hex ...
- Maven父子工程配置文件详解
项目骨架搭建成功之后. 因为父工程管理子工程.子工程相当于继承于子工程,所以子工程可以调用父工程里面的东西.那么就可以将jar包对应的配置文件书写到父工程的pom.xml文件中,注意:父工程的打包方式 ...
- Andriod Fragment 的作用和基本用法
1.什么是Fragment: Fragment (片段)在Google Android 开发指南中的解释是:片段是Activity中的一部分,一个Activity中可以有多个Fragment.一个Fr ...
- Java 11 发布计划来了,已确定 3个 新特性!!
Oracle 已经发布了 Java Development Kit 10,下一个版本 JDK 11 也在准备之中了.按照 Java 新的版本发布标准,Java 11 将在 6 个月后到来,现在它还只有 ...
- python全栈开发:hashlib加密
哈希加密代码 #!/usr/bin/env python # -*- coding;utf-8 -*- """ 哈希加密模块中有很多算法,调用不同的算法执行不同的加密, ...
- Android开发 从代码里设置Drawable图片不显示的问题
问题描述 我们从代码里获得Drawable在设置给View时会发现,图片不显示的问题.比如如下代码: Drawable drawable = getResources().getDrawable(R. ...
- 阶梯nim游戏
阶梯nim游戏有n个阶梯,0-n-1,每个阶梯上有一堆石子,编号为i的阶梯上的石子只能移动到i-1上去,每次至少移动一个,最后所有的石子都移动到0号阶梯上了.结论:奇数阶梯上的石子异或起来,要是0,就 ...
- 解决Mybatis的invalid bound statement (not found)异常
使用Maven构建SSM时, 需要在pom.xml中配置一些信息, 否则mapper.xml就无法被扫描到, 程序就会抛invalid bound statement (not found)异常 解决 ...