OpenCV中Mat的基本用法:创建、复制
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 = imread("test.jpg");
2 Mat dst = src.clone();
4.方法四:
1 Mat src = imread("test.jpg");
2 Mat dst;
3 src.copyTo(dst);
特別注意:方法一與方法二的Mat對象只會復制頭部分和指向像素數據的指針,不會真正復制數據部分。方法三與方法四的Mat可以實現數據對象的完全復制。
總結
以上是生活随笔為你收集整理的OpenCV中Mat的基本用法:创建、复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 日期 区间_如何实现时间区间的
- 下一篇: MC里的奇葩玩法我的世界的奇葩玩法