• Mat补充


    Mat的创建

    1.使用Mat的构造函数

        Mat test(2,2,CV_8UC3,Scalar(0,0,255));

    2.使用Mat的构造函数

       int sizes[3] = {2,2,2};

       Mat test(3,sizes,CV_8UC3,Scalar::all(0));

    3.为已存在的IplImage指针创建信息头

       int sizes[3] = {2,2,2};

       Mat test(3,sizes,CV_8UC3,Scalar::all(0));

    4.使用create函数

       Mat test;

       test.create(4,4,CV_8UC2);

     5.使用Matlab初始化方式

      (1)Mat me = Mat::eye(4,4,CV_64F);

    (2)Mat mo = Mat::ones(2,2,CV_32F);

    (3)Mat mz = Mat::zeros(3,3,CV_8UC1);

    注:元素类型 CV_[位数][带符号与否][类型前缀]C[通道数]

    Mat中相关成员的意义

    1.data

    Mat对象中的一个指针,指向存放矩阵数据的内存(uchar *data)

    2.dims

    矩阵的纬度

    3.channels

    矩阵通道,矩阵中每一个矩阵元素拥有的值的个数

    4.depth

    深度,即每一个像素的位数,也是每一个通道的位数。在opencv的Mat.depth()中得到的是一个0 – 6的数字,分别代表不同的位数:

    enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5, CV_64F=6 },可见 0和1都代表8位, 2和3都代表16位,

    4和5代表32位,6代表64位。

    5.elemSize

    矩阵中每个元素的大小,每个元素包含channels个通道,如果Mat中的数据的数据类型是CV_8U那么elemSize = 1;是CV_8UC3那么

    elemSize = 3,是CV_16UC2那么elemSize = 4。

    6.elemSize1

    矩阵中数据类型的大小,即elemSize/channels,也就是depth对应的位数

    7.step

    是一个数组,定义了矩阵的布局

    若矩阵有n维,则step数组大小为n

    step[n-1] = elemSize(每个矩阵元素的数据大小)

    step[n-2] = size(1维)*elemSize

    step[n-3] = size(2维)*size(1维)*elemSize

    ...

    step[0] = size(n-1维)*size(n-2维)*...size(1维)*elemSize

    8.step1

    step1也是一个数组,为step/elemSize1,若矩阵有n维,则step1[n-1] = channels。

    9.type

    矩阵元素的类型,即创建Mat时传递的类型,例如CV_8UC3、CV_16UC2等。

  • 相关阅读:
    Android安卓 _“Activity"_01+简单的拨号器
    Android安卓 “内部类”
    我的第一天 Andorid “hello_world”
    Android sqlite 创建数据库
    Sqlite(代码 jabc)
    判断网络状态
    Android sqlite(jdbc)
    Android 单机事件的使用
    JAVA内部类(成员.局部.匿名)
    我的第一个Android程序
  • 原文地址:https://www.cnblogs.com/zuoyou151/p/9453466.html
Copyright © 2020-2023  润新知