【OpenCV学习笔记】1-Mat数据结构

本文介绍了OpenCV中的核心数据结构Mat,包括像素值的存储方式(如RGB、BGR、HSV、HLS、YCrCb),Mat对象的创建,特别是如何使用Mat()构造函数和Create()函数。讲解了Mat的组成结构,如矩阵头和共享矩阵的计数机制,以及如何通过clone()和copyTo()实现矩阵副本。此外,还提到了OpenCV的格式化输出、关键类(如Point、Scalar、Size、Rect)以及常用知识点,如Matx、Vec、Range等。
摘要由CSDN通过智能技术生成


本笔记来源于《OpenCV3编程入门》 毛星云等著

像素值的存储方法

RGB是最常见的颜色系统,它与人眼采用相似的工作机制,被显示设备所采用。
OpenCV中RGBBGR有所区别。其中后者是OpenCV默认通道储存顺序。

HSVHLS把颜色分解成色调、饱和度和亮度/名都。这是描述颜色更自然的方式。可以通过抛弃最后一个元素,使算法对输入图像的光照条件不敏感。

YCrCb在JPEG图像格式中被广泛使用

显示创建Mat对象

最常用的方法就是直接使用Mat()构造函数
如:
Mat M(2,2, CV_8UC3 ,Scalar(0,0,255));

CV_8UC3 和 Scalar(0,0,255)各代表什么?

对于二维多通道图像,首先要定义其尺寸,即行数和列数,然后,需要制定存储元素的数据类型以机每个矩阵点的通道数。为此,依据下面的规则有多种定义:

CV_[位数][带符号与否][类型前缀]C[通道数]

由此可以知道
CV_8UC3代表的是: 使用8位的unsigned char型,每个像素由三个元素组成三通道(预先定义的通道数可达4个)。

Scalar是个short型的向量,能够使用制定的定制化值来初始化矩阵,还可以用来表示颜色

如何创建三维矩阵?

/*-------------朱砂青瓦 创建三维矩阵--------------*/
int sz[3]={2,2,2};
Mat L(3,sz,CV_8UC,scalar::all(0));

第一个参数指定维数,然后传递一个指向一个数组的指针,包含每个维度的尺寸。

另外可以使用Mat类自带的Create()函数来初始化Mat类

/*-------------朱砂青瓦 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值