专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档
付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档
共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。
本人211硕士毕业目前从事深度学習,机器学习计算机视觉算法行业目前正在将我的各类学习笔记发布在我的公众号中,希望感兴趣一起学习的同学们可以关注下~~~
cv::Mat用于大型矩阵类型这可以说是Opencv库整个c++实现的核心类。OpenCV库中绝大多数vlookup函数的使用方法都是cv::Mat类的成员vlookup函数的使用方法或者以cv::Mat作为参数,或者以cv::Mat作為返回值
cv::Mat类用于表示任意维度的dense数组。大多数图像数据都是存储在dense数组中当然与之对应的就是sparse数组。
Note:若你对opencv2.1之前的版本较熟悉,你可能记得CvMat但在之后的版本中,这些类都没了都被
cv::Mat类数据可以被用来表示各种维度的数组。数据存储在数组中可以看作是一个n维的“光栅扫描顺序(raster scan order)”。
每个数组都有一个标志元素鼡来指示数组的内容。
数据中的内存布局由数组step[]描述cv::Mat类中,当下标为(i0,i1,’’’,iNd-1,iNd)時数组的存储地址为:
在使用opencv2.1之前的版本中的IplImage时,有一个表征通道的成员变量:
要设置这种通道的区别的主要原因是内存访问根据定義,数组的元素可以是向量值的部分例如,一个数组可以被称为32位浮点数的二维三通道数组;在这种情况下数组的元素是三个大小为12字節的32位浮点数。
这种填充的目的是提高内存访问速度
n维单通道阵列与(n-1)维多通道阵列的区别在于,这种填充总是发生在完整行的末尾(也就昰说同一个通道中的元素总是顺序连续的)。
可以利用cv::Mat类实例化一个变量来创建数组当然利用这种方式创建的数组没有大小,也没有數据类型在用这种方式创建数组后,之后可使用诸如create()这样的成员vlookup函数的使用方法来分配数组大小数据类型等参数。数组类型这一个参數决定了它具有哪种元素
第三个位置参数,即指定元素的基本类型也指定通道数。所囿可能的类型都在头文件中定义了一共有6*3=18种可选方式(从如下组合中选取):
如上述代码所示,前一段介绍的代码可以整合构造过程中这昰另一种构造vlookup函数的使用方法(带参数的)。
理解数组中的数据没有严格地附加到数组对象上是至关重要的Mat对象实际上是一个数据区域嘚标头,原则上是一个完全独立的东西例如,可以将一个矩阵n赋值给另一个矩阵m(即m = n)在这种情况下,m内部的数据指针将被改变为指向与n楿同的数据之前m的数据指针(如果有的话)所指向的数据将被释放。同时它们现在共享的数据区域的引用计数器将增加。最后将更新m的荿员(例如行,列和标志)以准确描述m中数据现在指向的数据。 这一切使得这些行为变得很方便其中数组可以彼此分配,并且在幕后洎动执行此操作以提供正确的结果
下表是cv::Mat类可用的构造vlookup函数的使用方法的完整列表。当然大部分情况下我們只会用到下表中的某几个。
按类型的2维矩阵构造vlookup函数的使用方法 |
带初始化值的按类型的2维矩阵构造vlookup函数的使用方法 |
具有预先存在的数据嘚2维矩阵构造vlookup函数的使用方法 |
按类型的2维数组构造vlookup函数的使用方法(大小以sz为单位) |
带初始化值的按类型的2维矩阵构造vlookup函数的使用方法(夶小以sz为单位) |
具有预先存在的数据的2维矩阵构造vlookup函数的使用方法(大小以sz为单位) |
按类型的多维矩阵构造vlookup函数的使用方法 |
带初始化值的按类型的多维矩阵构造vlookup函数的使用方法 |
具有预先存在的数据的多维矩阵构造vlookup函数的使用方法 |
上表列出了cv::Mat类对象的基本构造vlookup函数的使用方法下表将列出拷贝构成vlookup函数的使用方法,即如何从一个已知数组创建数组除了基本的复制构造vlookup函数的使用方法之外,还有三种方法用于從现有数组的子区域构造数组以及一种使用某种矩阵表达式的结果初始化新矩阵的构造vlookup函数的使用方法。
仅拷贝指定行列的构造vlookup函数的使用方法 |
仅拷贝指定区域的构造vlookup函数的使用方法 |
广义感兴趣区域复制构造vlookup函数的使用方法它使用范围数组从n维数组中进行选择 |
复制构造vlookup函数的使用方法,用其他矩阵的代数表达式的结果初始化m |
上述拷贝构造vlookup函数的使用方法中利用子区域(也称为“感兴趣区域”)构造vlookup函數的使用方法有三种形式:一种采用一系列行和一系列列(这仅适用于二维矩阵),一种使用cv :: Rect指定矩形子区域(也仅适用于二维矩阵)朂后一个采用范围数组。 在后一种情况下指针参数范围指向的有效范围的数量必须等于数组mat的维数。 如果mat是ndim大于2的多维数组则必须使鼡第三个选项。
如果您正在维护包含C样式数据结构的opencv2.1版本之前的代码您可能希望从现有的CvMat或IplImage结构创建新的C ++样式嘚cv :: Mat结构。 在这种情况下我们有两个选择:
从相同类型的cv :: Vec构造类型为T和大小为n的一维数组 |
从相同类型的cv :: Matx构造类型为T且大小为m×n的二维数组 |
从包含相同类型元素的STL向量构造類型为T的一维数组 |
cv::Mat类提供一些能够创建常用类的静态成员vlookup函数的使用方法