美文网首页
OpenCV中Mat的基本用法:创建、复制

OpenCV中Mat的基本用法:创建、复制

作者: 因小米 | 来源:发表于2020-03-11 21:11 被阅读0次

一、Mat类的创建:

1.方法一:

通过读入一张图像,直接将其转换成Mat对象。

Mat image = imread("test.jpg");
Mat image = imread("F:\\test.jpg");

其中,imread()方法需要传入String类型的值,一般都是图像文件路径。
注意:图像文件路径中需要两个“\”

2.方法二:

使用无参数构造函数,创建Mat对象。

Mat image = Mat();
image.create(4, 4, CV_8UC3);//创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

上述CV_8UC3中的8表示8位,UC表示uchar类型,3表示三个通道。

3.方法三:

使用带行、列、类型这个三个参数的构造函数创建Mat对象。

Mat m = Mat(4, 4, CV_8UC3); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

与方法二创建的像素块一样。

4.方法四:

使用行、列、类型、Scalar向量四个参数的构造函数创建Mat对象。

Mat m = Mat(4, 4, CV_8UC3, Scalar(0, 255, 255); 
//创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位,指定三通道颜色值向量Scalar(0, 255, 255)

同样表示创建一个4x4的像素块,唯一的区别是颜色不是默认值,而是我们指定的三通道颜色值向量Scalar(0, 255, 255)。其中Scalar向量数目永远是等于通道数目。

5.方法五:

使用大小、类型两个参数的构造函数创建Mat对象。

Mat m = Mat(Size(4, 4), CV_8UC3); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位
6.方法六:

使用大小、类型、Scalar向量三个参数的构造函数创建Mat对象。

Mat m = Mat(Size(4, 4), CV_8UC3, Scalar(255, 0, 0)); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位
7.方法七:

使用Mat::zeros函数实现,两个参数的含义:Size表示图像宽与高,另外一个表示类型。

Mat m = Mat::zeros(Size(4,4), CV_8UC3); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位
8.方法八:

使用Mat::ones函数实现,两个参数的含义:Size表示图像宽与高,另外一个表示类型。

Mat m = Mat::ones(Size(4,4), CV_8UC1); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

注意:这次类型是CV_8UC1表示创建的是一个通道类型数据。

二、Mat类的复制:

1.方法一:
Mat m2;
Mat m1 = imread("test.jpg");
m2 = m1;
2.方法二:
Mat m1 = imread("test.jpg");
Mat m2(m1);
3.方法三:
Mat src = imread("test.jpg");
Mat dst = src.clone();
4.方法四:
Mat src = imread("test.jpg");
Mat dst;
src.copyTo(dst);

特别注意:方法一与方法二的Mat对象只会复制头部分和指向像素数据的指针,不会真正复制数据部分。方法三与方法四的Mat可以实现数据对象的完全复制。

相关文章

网友评论

      本文标题:OpenCV中Mat的基本用法:创建、复制

      本文链接:https://www.haomeiwen.com/subject/vqxkjhtx.html