OpenCV——Mat類的創建、復制、函數


Mat類的創建:

方法一:

通過讀入一張圖像,直接轉換為Mat對象

Mat image = imread("test.jpg");

其中 imread()方法需要傳入String類型的值,一般都是圖像文件路徑。

 

方法二:

使用無參數構造函數,創建Mat對象

Mat image = Mat();

image.create(4, 4, CV_8UC3);

此刻表示創建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數都是8位,一個字節的。上述CV_8UC3中的8表示8位、UC表示uchar類型、3表示三個通道。 

 

方法三:

使用行、列、類型帶這個三個參數的構造函數創建Mat對象

Mat m = Mat(4, 4, CV_8UC3)

表示創建一個跟方法二一樣的像素塊

 

方法四:

使用行、列、類型、Scalar向量四個參數的構造函數創建Mat對象

Mat m = Mat(4, 4, CV_8UC3, Scalar(0, 255, 255);

同樣表示創建一個4x4的像素塊,唯一不一樣的是顏色不是默認值而是我們指定的三通道顏色值向量Scalar(0, 255, 255)。其中Scalar向量數目永遠是等於通道數目

 

方法五:

使用大小、類型兩個參數的構造函數創建Mat對象

Mat m = Mat(Size(4, 4), CV_8UC3);

同樣創建一個4x4的每個通道8位三個通道的像素塊

 

方法六:

使用大小、類型、Scalar向量三個參數的構造函數創建Mat對象

Mat m = Mat(Size(4, 4), CV_8UC3, Scalar(255, 0, 0));

同樣創建一個4x4的每個通道8位三個通道的像素塊

 

方法七:

使用Mat::zeros函數實現,兩個參數一個是Size表示圖像寬與高

另外一個表示類型:

Mat m = Mat::zeros(Size(4,4), CV_8UC3);

同樣創建一個4x4的每個通道8位三個通道的像素塊

 

方法八:

使用Mat::ones函數實現,兩個參數一個是Size表示圖像寬與高,

另外一個表示類型

Mat m = Mat::ones(Size(4,4), CV_8UC1);

同樣創建一個4x4的每個通道8位一個通道的像素塊

注意這次類型是CV_8UC1表示創建的是一個通道類型數據。

 Mat類的復制:

方法一:

Mat m2;

Mat m1 = imread("test.jpg");

m2 = m1;

 

方法二:

Mat m1 = imread("test.jpg");

Mat m2(m1);

通過上述兩種方法Mat對象只會復制頭部分和指向像素數據的指針,不會真正復制數據部分。通過如下方法Mat可以實現數據對象的完全復制

 

方法三:

Mat src = imread("test.jpg");

Mat dst = src.clone();

 

方法四:

Mat src = imread("test.jpg");

Mat dst;

src.copyTo(dst);

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM