24小时热门版块排行榜    

Znn3bq.jpeg
查看: 492  |  回复: 0

yadan33

新虫 (初入文坛)

[交流] opencv2 矩阵操作

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

src.copyTo(dst)
把src矩阵中的数据拷贝到dst。


http://blog.sina.com.cn/s/blog_8924265b0101fbll.html


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()
离散傅立叶变换、离散余弦变换
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yadan33 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 277求调剂 +23 倪建设 2026-04-06 23/1150 2026-04-13 00:40 by 王童子龙
[考研] 2本,初试303,0860求调剂 +6 floriea 2026-04-12 8/400 2026-04-12 18:13 by zhouxiaoyu
[考研] 331求调剂 +5 王国帅 2026-04-11 5/250 2026-04-11 22:56 by 溪涧流水
[考研] 0860004 求调剂 309分 +9 Yin DY 2026-04-08 9/450 2026-04-11 22:55 by dongdian1
[考研] 药学专硕调剂 +8 ? 一路生?花? 2026-04-10 10/500 2026-04-11 21:21 by zhouxiaoyu
[考研] 270求调剂 +14 杨乐369 2026-04-11 14/700 2026-04-11 20:16 by 蓝云思雨
[考研] 11408。358求调剂 +3 TMYzds 2026-04-07 3/150 2026-04-11 17:10 by 氮气气气
[考研] 生物学调剂 可调剂到生物与医药 +8 李政莹 2026-04-06 9/450 2026-04-11 10:36 by wwj2530616
[考研] 284求调剂 +12 archer.. 2026-04-10 13/650 2026-04-11 08:44 by zhq0425
[考研] 302分求调剂 +9 凡语祈愿 2026-04-08 10/500 2026-04-10 23:26 by 314126402
[考研] 368求调剂 +3 17385968172 2026-04-10 3/150 2026-04-10 20:12 by 电子奥德彪
[考研] 284求调剂 +9 让我上岸吧阿西 2026-04-09 11/550 2026-04-10 19:18 by 靖jing
[考研] 青岛科技大学材料学院,环境学院调剂补录4月10日以前都可以 +3 1青科大。 2026-04-09 5/250 2026-04-10 09:58 by 翩翩一书生
[考研] 284求调剂 +7 让我上岸吧阿西 2026-04-09 7/350 2026-04-09 18:59 by haironglove
[考研] 考研调剂 +13 冰冰,,, 2026-04-07 13/650 2026-04-09 17:01 by Lilly_Li
[考研] 1U盾记得记得就 +9 sanjin020722 2026-04-08 10/500 2026-04-09 14:11 by 诗与自由
[考研] 296求调剂 +3 汪!?! 2026-04-08 3/150 2026-04-08 22:00 by zhouyuwinner
[考研] 316求调剂 +4 15318418673 2026-04-07 4/200 2026-04-07 22:12 by hemengdong
[考研] 372分材料与化工(085600)英二数二求调剂 +4 蓝笺片 2026-04-06 4/200 2026-04-07 12:30 by dongzh2009
[考研] 信工所11408 340分 本科西安交大自动化 +3 moontrek 2026-04-06 3/150 2026-04-07 09:56 by chongya
信息提示
请填处理意见