OpenCV基本数据结构

本文介绍了OpenCV中的核心数据结构Mat,包括其组成、内存管理和创建方法。此外,还提到了其他常用的数据结构如Point、Scalar、Size、Rect,以及颜色空间转换函数cvtColor()。Mat对象的创建和内存管理机制是解决大图像处理中内存占用问题的关键,而其他数据结构则在表示图像特征和处理中扮演重要角色。
摘要由CSDN通过智能技术生成

参考学习书籍:《OpenCV3编程入门》

环境:OpenCV4.1.1 + VS2019

一.基础图像容器Mat

Mat是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等),一个指向存储所有像素值的矩阵(根据所选存储方式不同,矩阵可以是不同维数的)。矩阵头所占内存小,通常是一个常数,而矩阵本身的尺寸很大,∵它存储了所有的像素值。而且图像处理本身就是一个计算量很大的过程,除非万不得已,都不应该进行大图像的复制。

为了解决占用空间大这一问题,OpenCV引入了计数机制:让每个Mat对象都有自己的矩阵头,但可以共同指向一个矩阵(即让矩阵指针指向同一个地址)。

在OpenCV1.0中,还不存在Mat类,在那时,OpenCV是基于C接口实现的。而其中的图像存储格式IplImage*,在退出前没有relase的话,就会造成内存泄漏,使用非常不方便。在C++出现后,有了类的概念,就不用担心这一问题。如Mat类,是有自动的存储管理。在创建对象时,是不会分配内存空间的。

Mat src;                 //创建Mat类对象  不分配内存空间
src = imread("1.jpg");   //为src开辟内存空间

上面是一种创建Mat类对象以及赋值的方法,第一行仅是创建对象,即创建矩阵头信息;第二行才是为其分配内存。同样也可以使用下面这种方法创建一个对象并初始化。这就是C++类的好处,同样,跟C++一样的面向对象的语言Java也是这样的。

Mat src = imread("1.jpg");

下面是两种方法的结构都是一样的,都是让dst对象指向src对象的矩阵,只是矩阵头(对象名)不一样。

Mat dst(src);    //使用拷贝构造函数

Mat dst;
dst = src;       //赋值运算符

显示创建Mat对象的七种方法

对于显示创建Mat对象的七种方法,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值