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的方法至少有七種,有興趣的可以參考原書



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章