OpenCV中Mat的基本用法:創建、復制
一、Mat類的創建:
1.方法一:
通過讀入一張影像,直接將其轉換成Mat物件,
1 Mat image = imread("test.jpg"); 2 3 Mat image = imread("F:\\test.jpg");
其中,imread()方法需要傳入String型別的值,一般都是影像檔案路徑,
注意:影像檔案路徑中需要兩個“\”,要不然會報錯,
2.方法二:
使用無引數建構式,創建Mat物件,
1 Mat image = Mat(); 2 image.create(4, 4, CV_8UC3);//創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位
上述CV_8UC3中的8表示8位,UC表示uchar型別,3表示三個通道,
3.方法三:
使用帶行、列、型別這個三個引數的建構式創建Mat物件,
1 Mat m = Mat(4, 4, CV_8UC3); //創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位
與方法二創建的像素塊一樣,
4.方法四:
使用行、列、型別、Scalar向量四個引數的建構式創建Mat物件,
1 Mat m = Mat(4, 4, CV_8UC3, Scalar(0, 255, 255); 2 //創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位,指定三通道顏色值向量Scalar(0, 255, 255)
同樣表示創建一個4x4的像素塊,唯一的區別是顏色不是默認值,而是我們指定的三通道顏色值向量Scalar(0, 255, 255),其中Scalar向量數目永遠是等于通道數目,
5.方法五:
使用大小、型別兩個引數的建構式創建Mat物件,
1 Mat m = Mat(Size(4, 4), CV_8UC3); //創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位
6.方法六:
使用大小、型別、Scalar向量三個引數的建構式創建Mat物件,
1 Mat m = Mat(Size(4, 4), CV_8UC3, Scalar(255, 0, 0)); //創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位
7.方法七:
使用Mat::zeros函式實作,兩個引數的含義:Size表示影像寬與高,另外一個表示型別,
1 Mat m = Mat::zeros(Size(4,4), CV_8UC3); //創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位
8.方法八:
使用Mat::ones函式實作,兩個引數的含義:Size表示影像寬與高,另外一個表示型別,
1 Mat m = Mat::ones(Size(4,4), CV_8UC1); //創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位
注意:這次型別是CV_8UC1表示創建的是一個通道型別資料,
二、Mat類的復制:
1.方法一:
1 Mat m2; 2 Mat m1 = imread("test.jpg"); 3 m2 = m1;
2.方法二:
1 Mat m1 = imread("test.jpg"); 2 Mat m2(m1);
3.方法三:
1 Mat src = https://www.cnblogs.com/cxyxm/p/imread("test.jpg"); 2 Mat dst = src.clone();
4.方法四:
1 Mat src = https://www.cnblogs.com/cxyxm/p/imread("test.jpg"); 2 Mat dst; 3 src.copyTo(dst);
特別注意:方法一與方法二的Mat物件只會復制頭部分和指向像素資料的指標,不會真正復制資料部分,方法三與方法四的Mat可以實作資料物件的完全復制,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47713.html
標籤:其他
上一篇:變分推斷與變分自編碼器
