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


    OpenCVMat的基本用法:创建、复制

    一、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可以实现数据对象的完全复制。

  • 相关阅读:
    浏览器兼容性问题
    浏览器对象的属性和方法
    js总结体会
    css样式总结体会
    HTML标签类总结
    如何自动化实现二级域名访问,类似博客
    php
    require.js
    gulp
    javascript
  • 原文地址:https://www.cnblogs.com/cxyxm/p/12465283.html
Copyright © 2020-2023  润新知