Opencv的Mat内容学习

Mat是OpenCV中的核心数据结构,用于存储图像数据。它支持灰度图(存放uchar类型)和RGB彩色图(存放Vec3b类型)。文章介绍了Mat的构造函数,包括指定尺寸和类型创建矩阵,以及通过Scalar初始化元素值。此外,还讨论了At函数用于访问矩阵元素及Channels函数用于获取图像通道数。
摘要由CSDN通过智能技术生成

来源:Opencv的Mat内容小记 - 知乎 (zhihu.com)

1.Mat是一种图像容器,是二维向量。

灰度图的Mat一般存放<uchar>类型

RGB彩色图像一般存放<Vec3b>类型。

(1)单通道灰度图数据存放样式:

 

(2)RGB三通道彩色图存放形式不同,每列并列存放通道数据的子列(顺序:BGR)

 

OpenCV学习笔记:Mat类详解(一) - 月夜_1 - 博客园 (cnblogs.com)

1.构造函数:

cv::Mat::Mat(Size size,int type )

Size类等效于一个成对数据,size::Size(cols,rows)

这里是先列再行。

    Mat src1(3,4,CV_32FC3);

    Mat src2(Size(3,4),CV_32FC3);

    cout<<"src1.rows="<<src1.rows<<"src1.cols="<<src1.cols<<endl;

    cout<<"src2.rows="<<src2.rows<<"src2.cols="<<src2.cols<<endl;

    cout<<"src1.size="<<src1.size()<<"src2.size="<<src2.size()<<endl;

输出:

src1.rows=3src1.cols=4

src2.rows=4src2.cols=3

src1.size=[4 x 3]src2.size=[3 x 4]

2.构造函数:

cv::Mat::Mat(int ndims,const int *  sizes,int type,const Scalar& s) 
实例:

    Mat src1(300,400,CV_8UC3,Scalar(255,255,255));

imshow("src",src1);

通过Scalar数据类来初始化元素值。参数顺序是BGR。

3.At函数:

功能:访问矩阵元素。

函数原型:template<typename _Tp> _Tp& at(int row, int col);

    Mat src1(300,400,CV_8UC3,Scalar(0,255,255));

    imshow("src",src1);

    uchar elem;

    elem=src1.at<uchar>(0,0);

    qDebug()<<elem;

    elem=src1.at<uchar>(0,1);

    qDebug()<<elem;

    elem=src1.at<uchar>(0,2);

    qDebug()<<elem;

输出结果:

0

255

255

4.Channels函数:

int cv::Mat::channels   ()  const

返回图像的通道数

    Mat src1(300,400,CV_8UC3,Scalar(0,255,255));

    imshow("src",src1);

    qDebug()<<src1.channels();

结果:3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lpl还在学习的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值