美文网首页
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