opencv3_note1:基础容器Mat介绍与创建

基础图像容器Mat的介绍
1.Mat的介绍:
1-1Mat作为一个类 由矩阵头(矩阵的尺寸 储存方法以及储存的地址)以及指向储存所有像素点的指针组成

1-2:由于基于c++ Mat 不需要手动开辟空间 自动进行空间的处理(非特殊要求)
opencv机制:采用所有的Mat对象共享一个矩阵 采用拷贝构造的方法实现空间的公有性 
如何拷贝:拷贝矩阵头和指针

2.像素点的介绍
2-1.介绍:
像素是指由图像的小方格即所谓的像素(pixel)组成的,这些小方块都有一个明确的位置和被分配的色彩数值,
而这些一小方格的颜色和位置就决定该图像所呈现出来的样子。可以将像素视为整个图像中不可分割的单位或者是元素,
不可分割的意思是它不能够再切割成更小单位抑或是元素,它是以一个单一颜色的小格存在。每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。
2.将一幅图放大很多倍以后 看到的是一个个的带颜色的小方格 所有的带方格的像素点组成了图像
3.像素点的颜色存储方式一般有几种 称为"颜色系统"(RGB HSV HLS YCrCb CLE)
(注:以RGB而言 使用color_red color_green color_blue(红绿蓝),每种分0到255层次 实现对于颜色的不同呈现)

2-2.操作
1.与其说Mat是一个类 倒不如说Mat是一个颜色的容器 通过Mat开始实现图像的存储

3.code

1.采用Mat的默认构造进行初始化(常见方法)

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
void main()
{
	//1.采用默认构造初始化矩阵
	cv::Mat M(3, 2, CV_8UC3, cv::Scalar(0, 0, 255));
	/*function details :
	1.设定矩阵的长和宽(三行两列)
	2.设定像素点的通道(单通道 : 灰色 三通道 : 彩色 四通道(加入ALPHA通道 透明度))和深度(深度代表着存储每一个像素点的数据类型(8位 16位 32位))*/

		std::cout << "M=" << " " << M << std::endl;
	while (!(char)cv::waitKey(27) == 's');
	system("pause");
}
	

2.采用create方法进行初始化

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

void main()
{
	//采用create方法初始化矩阵
	cv::Mat M;
	M.create(3, 2, CV_8UC3);
	std::cout << "M=" << std::endl << "" << M << std::endl << std::endl;
	while (!(char)cv::waitKey(27) == 's');
	system("pause");
}

3.采用MatLab式的初始化方法实现不同类型的矩阵初始化

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

void main()
{
	//创建单位矩阵
	cv::Mat e = cv::Mat::eye(3, 3, CV_64F);
	std::cout << "e= " << std::endl << " " << e << std::endl << std::endl;
	//创建初始矩阵(都为1)
	cv::Mat z = cv::Mat::zeros(3, 3, CV_64F);
	std::cout << "z= " << std::endl << " " << z << std::endl << std::endl;
	//创建零矩阵
	cv::Mat o = cv::Mat::ones(3, 3, CV_64F);
	std::cout << "o= " << std::endl << " " << o<< std::endl << std::endl;
	while (!(char)cv::waitKey(27) == 's');
	system("pause");
}

 

注:该笔记参考于浅墨大神的opencv3编程入门 ,在这里只列出了常用方法 ,创建Mat的方法至少有七种,有兴趣的可以参考原书



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值