《OpenCV 4计算机视觉项目实战 》 —2.10 基本矩阵运算

举报
华章计算机 发表于 2019/11/10 11:20:48 2019/11/10
【摘要】 本节书摘来自华章计算机《OpenCV 4计算机视觉项目实战》 一书中第二章,第2.10节,作者[西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendon)。

2.10 基本矩阵运算

在本节中,我们将学习一些基本和重要的矩阵运算,这些运算可以应用于图像或任何矩阵数据。我们已经知道如何加载图像并将其存储在变量Mat中,此外还可以手动创建Mat。最常见的构造函数是为矩阵提供大小和类型,如下所示:

 image.png

你可以通过构造函数Mat(size,type,pointer_to_buffer)用来自第三方库的存储缓冲区创建一个新的矩阵链接,而无须复制数据。

受支持的类型取决于要存储的数字类型和通道数,最常见的类型如下:

 image.png

你可以使用CV_number_typeC(n)创建任何类型的矩阵,其中number_type是8位无符号(8U)到64位浮点(64F),其中(n)是通道数,允许的通道数范围为1~CV_CN_MAX。

初始化不会设置数据的值,因此可能获得不需要的值。为了避免不需要的值,可以使用0或1值及其各自的函数来初始化矩阵:

 image.png

前面矩阵的结果如图2-6所示。

 image.png

图 2-6

一个特殊矩阵初始化是eye函数,它可以创建具有指定类型和大小的单位矩阵:

 image.png

其输出如图2-7所示。

 image.png

图 2-7

OpenCV的Mat类能够执行所有的矩阵运算。我们可以用+和-运算符来加上或减去两个相同大小的矩阵,如以下代码块所示:

 image.png

上述操作的结果如图2-8所示。

 image.png

图 2-8

我们可以用*运算符乘以一个标量,或者用mul函数乘以矩阵的每个元素,也可以用*运算符执行矩阵乘法:

 image.png

上述操作的结果如图2-9所示。

 image.png

图 2-9

其他常见的数学矩阵运算是转置(transposition)和矩阵求逆(matrix inversion),分别由t()和inv()函数定义。OpenCV提供的其他有趣的函数是矩阵中的数组运算,例如,计算非零元素。这对于计算对象的像素或区域很有用:

 image.png

OpenCV提供了一些统计功能,可以使用meanStdDev函数计算通道的平均值和标准差:

 image.png

另一个有用的统计函数是minMaxLoc,该函数可以查找矩阵或数组的最小值和最大值,并返回位置和值:

 image.png

这里的src是输入矩阵,minVal和maxVal是检测到的最小值和最大值,minLoc和maxLoc是检测到的Point值。

其他核心和有用的功能在http://docs.opencv.org/modules/core/doc/core.html中有详细介绍。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。