首页 > 其他 > 详细

OpenCV第二章 数据载入、显示与保存

时间:2021-08-02 11:10:01      阅读:14      评论:0      收藏:0      [点我收藏+]

第二章 数据载入、显示与保存

2.1 图像存储容器

2.1.1 Mat类介绍

Mat分为矩阵头和指向存储数据的矩阵指针两部分。

代码清单2-1 创建Mat类
cv::Mat a; //创建一个名为a的矩阵头
a = cv::imread("test.jpd"); //向a中赋值图像数据,矩阵指针指向像素数据
cv::Mat b = a; //复制矩阵头,并命名为b
代码清单2-2 声明一个指定类型的Mat类
cv::Mat A = Mat_<double>(3,3); //创建一个3*3的矩阵用于存放double类型数据
代码清单2-3 通过OpenCV数据类型创建Mat类
cv::Mat a(640,480,CV_8UC3); //创建一个640*480的3通道矩阵用于存放彩色图像
cv::Mat a(3,3,CV_8UC1); //创建一个3*3的8位无符号整数的单通道矩阵
cv::Mat a(3,3,CV_8U); //创建单通道矩阵,c1标识可以省略

2.1.2 Mat类构造与赋值

1.Mat类的构造

代码清单2-4 默认构造函数使用方式
cv::Mat::Mat();
代码清单2-5 利用矩阵尺寸和类型参数构造Mat类
cv::Mat::Mat(int rows,
            int cols,
            int type
            )
  • rows:构造矩阵的行数
  • cols:矩阵的列数
  • type:矩阵中存储的数据类型
代码清单2-6 用Size()结构构造Mat
cv::Mat(Size size(),
       int type
       )
  • size:二维数组变量尺寸,通过Size(cols,rows)进行赋值
  • type:与代码清单2-5中的参数一致
代码清单2-7 用Size()结构构造Mat示例
cv::Mat a(Size(480,640),CV_8UC1); //构造一个行为640、列为480的单通道矩阵
cv::Mat b(Size(480,640),CV_32FC3); //构造一个行为640、列为480的3通道矩阵
代码清单2-8 利用已有矩阵构造Mat类
cv::Mat::Mat(const Mat & m);
  • m:是已经构建完成的Mat类矩阵数据

提示:如果希望复制两个一模一样的Mat类而彼此之间不会受影响,那么可以使用m=a.clone()实现

代码清单2-9 构造已有Mat类的子类
cv::Mat::Mat(const Mat & m,
            const Range & rowRange,
            const Range & rowRange = Rang::all()
            )
  • m:是已经构建完成的Mat类矩阵数据
  • rowRange:在已有矩阵中需要截取的行数范围,是一个Rang变量,例如从第2行到第5行可以表示位Rang(2,5)
  • rowRange:在已有矩阵中需要截取的列数范围,是一个Rang变量,例如从第2列到第5列可以表示位Rang(2,5),默认所有列都会截取。
代码清单2-10 在原Mat中截取子Mat类
cv::Mat b(a, Rang(2,5), Rang(2,5)); //从a中截取部分数据构造b
cv::Mat c(a, Rang(2,5)); //默认最后一个参数构成c

OpenCV第二章 数据载入、显示与保存

原文:https://www.cnblogs.com/richblog/p/15088664.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!