OpenCV 笔记(2):图像的属性以及像素相关的操作

Part11.  图像的属性

11.1 Mat 的主要属性

在前文中,我们大致了解了 Mat 的基本结构以及它的创建与赋值。接下来我们通过一个例子,来看看 Mat 所包含的常用属性。

先创建一个 3*4 的四通道的矩阵,并打印出其相关的属性,稍后会详细解释每个属性的含义。

Mat srcImage(3, 4, CV_16UC4, Scalar_<uchar>(1, 2, 3, 4));

cout << srcImage << endl;

cout << "dims:" << srcImage.dims << endl;
cout << "rows:" << srcImage.rows << endl;
cout << "cols:" << srcImage.cols << endl;
cout << "channels:" << srcImage.channels() << endl;
cout << "type:" << srcImage.type() << endl;
cout << "depth:" << srcImage.depth() << endl;
cout << "elemSize:" << srcImage.elemSize() << endl;
cout << "elemSize1:" << srcImage.elemSize1() << endl;
cout << "step:" << srcImage.step << endl;
cout << "step[0]:" << srcImage.step[0] << endl;
cout << "step[1]:" << srcImage.step[1] << endl;
cout << "step1[0]:" << srcImage.step1(0) << endl;
cout << "step1[1]:" << srcImage.step1(1) << endl;

输出结果:

[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4;
 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4;
 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
dims:2
rows:3
cols:4
channels:4
type:26
depth:2
elemSize:8
elemSize1:2
step:32
step[0]:32
step[1]:8
step1[0]:16
step1[1]:4

在上述例子中我们打印了 Mat 的很多属性,它们主要包括:

  • rows: 表示图像的高度。

  • cols:表示图像的宽度。

  • dims:表示矩阵的维度。

  • data:表示 Mat 对象中的指针(uchar 类型的指针),指向内存中存放矩阵数据的一块内存 (uchar* data)。

  • channels:表示通道数量;例如常见的 RGB、HSV 彩色图像,则 channels=3;若为灰度图,则 channels=1。

  • depth:表示图像的深度,它用来度量每一个像素中每一个通道的精度,它本身与通道数无关,它的数值越大表示精度越高。

数据类型 depth 的值 数据类型 取值范围 对应 C++ 的类型
CV_8U 0 8 位无符号类型 0—255 uchar,  unsigned char
CV_8S 1 8 位有符号类型 -128—127 char
CV_16U 2 16 位无符号类型 0—65535 ushort, unsigned short, unsigned short int
CV_16S 3 16 位有符号类型 -32768—32767 short, short int
CV_32S 4 32 位整数数据类型 -2147483648—2147483647 int, long
CV_32F 5 32 位浮点数类型 ±(1.18e-38……3.40e38) float
CV_64F 6 32 位双精度类型 ±(2.23e-308……1.79e308) double
  • type:表示矩阵的数据类型,它包含矩阵中元素的类型以及通道数信息。

数据类型 1 2 3 4
CV_8U CV_8UC1 CV_8UC2 CV_8UC3 CV_8UC4
CV_8S CV_8SC1 CV_8SC2 CV_8SC3 CV_8SC4
CV_16U CV_16UC1 CV_16UC2 CV_16UC3 CV_16UC4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值