OpenCV中的提取子矩阵的函数

自从OpenCV开始采用Mat格式,对于矩阵或图像的操作可以说是十分方便的,很多方法跟matlab也很相似。常常用到的一类操作是要提取一个图像或矩阵中的一部分,比如一行、一列、对角线、一个矩形区域等等。

1.【提取单行/列】

使用Mat::row(n)和Mat::col(n)可以直接返回第n行或第n列的矩阵头,这个是O(1)的操作,不会重新分配内存。

2.【提取多行/列】

OpenCV提供了Mat::rowRange(m,n)方法可以返回第[m,n)行,注意包括第m行,不包括第n行(都是从第0行开始计数);提取多列方法类似。

3.【提取矩形区域】

使用Mat::range()方法,注意范围仍然是左开右闭的。

4.【提取对角线】

OpenCV中提供了Mat::diag()方法,该方法的原型是:

C++: Mat Mat::diag(int d const)
C++: static Mat Mat::diag(const Mat& matD)

d: d=0则返回主对角线

d=1返回贴着主对角线上面的那一条,以此类推;

d=-1返回贴着主对角线下面的那一条,以此类推;

返回:以一个单列矩阵的形式返回主对角线,或主对角线方向上的数据。


如果我们要求副对角线怎么办呢?

直接翻转一下就好啦!使用cv::Flip()翻转矩阵,之后再调用diag()就可以啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值