《OpenCV 4计算机视觉项目实战 》 —2.10 基本矩阵运算
【摘要】 本节书摘来自华章计算机《OpenCV 4计算机视觉项目实战》 一书中第二章,第2.10节,作者[西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendon)。
2.10 基本矩阵运算
在本节中,我们将学习一些基本和重要的矩阵运算,这些运算可以应用于图像或任何矩阵数据。我们已经知道如何加载图像并将其存储在变量Mat中,此外还可以手动创建Mat。最常见的构造函数是为矩阵提供大小和类型,如下所示:
你可以通过构造函数Mat(size,type,pointer_to_buffer)用来自第三方库的存储缓冲区创建一个新的矩阵链接,而无须复制数据。
受支持的类型取决于要存储的数字类型和通道数,最常见的类型如下:
你可以使用CV_number_typeC(n)创建任何类型的矩阵,其中number_type是8位无符号(8U)到64位浮点(64F),其中(n)是通道数,允许的通道数范围为1~CV_CN_MAX。
初始化不会设置数据的值,因此可能获得不需要的值。为了避免不需要的值,可以使用0或1值及其各自的函数来初始化矩阵:
前面矩阵的结果如图2-6所示。
图 2-6
一个特殊矩阵初始化是eye函数,它可以创建具有指定类型和大小的单位矩阵:
其输出如图2-7所示。
图 2-7
OpenCV的Mat类能够执行所有的矩阵运算。我们可以用+和-运算符来加上或减去两个相同大小的矩阵,如以下代码块所示:
上述操作的结果如图2-8所示。
图 2-8
我们可以用*运算符乘以一个标量,或者用mul函数乘以矩阵的每个元素,也可以用*运算符执行矩阵乘法:
上述操作的结果如图2-9所示。
图 2-9
其他常见的数学矩阵运算是转置(transposition)和矩阵求逆(matrix inversion),分别由t()和inv()函数定义。OpenCV提供的其他有趣的函数是矩阵中的数组运算,例如,计算非零元素。这对于计算对象的像素或区域很有用:
OpenCV提供了一些统计功能,可以使用meanStdDev函数计算通道的平均值和标准差:
另一个有用的统计函数是minMaxLoc,该函数可以查找矩阵或数组的最小值和最大值,并返回位置和值:
这里的src是输入矩阵,minVal和maxVal是检测到的最小值和最大值,minLoc和maxLoc是检测到的Point值。
其他核心和有用的功能在http://docs.opencv.org/modules/core/doc/core.html中有详细介绍。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)