美文网首页
Mat的初始化与赋值

Mat的初始化与赋值

作者: 大龙10 | 来源:发表于2023-09-09 01:27 被阅读0次

一、type数据类型

  • 常量类型的命名规则为:
    CV_(位数)+(数据类型)+(通道数)。
    关系如下:
C1 C2 C3 C4
CV_8U 0 8 16 24
CV_8S 1 9 17 25
CV_16U 2 10 18 26
CV_16S 3 11 19 27
CV_32S 4 12 20 28
CV_32F 5 13 21 29
CV_64F 6 14 22 30
  • U为无符号整型,S为有符号整型,F为浮点型。
    例如:CV_32FC1表示float类型,C1表示1个通道

  • 与C++中的基本数据类型对应关系如下:
    Mat_<uchar>---------CV_8U
    Mat_<char>-----------CV_8S
    Nat_<short>---------CV_16S
    Mat_<ushort>--------CV_16U
    Mat_<int>-----------CV_32S
    Mat_<float>----------CV_32F
    Mat_<double>--------CV_64F

  • CV_8U 8位无符号整数 (0…..255)
    CV_8S 8 位符号整数 (-128…..127)
    CV_16U 16 位无符号整数 (0……65535)
    CV_16S 16 位符号整数 (-32768…..32767)
    CV_32S 32 位符号整数 (-2147483648……2147483647)
    CV_32F 32 位浮点数 (-FLT_MAX ………FLT_MAX,INF,NAN)
    CV_64F 64 位浮点数 (-DBL_MAX ……….DBL_MAX,INF,NAN)

二、Mat的定义和初始化

  • 1、默认形式
    Mat m=new Mat();
  • 2、指定类型和大小(行列)的二维数组
    Mat m= new Mat(int rows, int cols, MatType type);
    或 Mat m= new Mat(Size size, MatType type);
    Size(width, height), 宽高
  • 3、有初始化值的指定类型和大小(行列)的二维数组
    Mat m= new Mat(int rows, int cols, MatType type, Scalar s);
  • 4、使用预先存在数据定义的指定类型和大小(行列)的二维数组
    Mat m= new Mat(int rows, int cols, MatType type, Array data, long step = 0);
  • 5、指定大小(size)和类型的二维数组
    Mat m= new Mat(Size size, MatType type, Scalar s);
  • 6、使用预先存在的数据定义的制定大小(size)和类型的二维数组
    Mat m= new Mat(IEnumerable<int> sizes, MatType type, Array data, IEnumerable<long> steps = null);
  • 7、指定类型多维数组
    Mat m= new Mat(IEnumerable<int> sizes, MatType type);

三、需要数据拷贝的定义和初始化

  • 拷贝构造形式
    Mat(Mat m, Rect roi);
    Mat(Mat m, params Range[] ranges);
    Mat(Mat m, Range rowRange, Range? colRange = null);

四、其他形式

  • 使用cv::Vec定义相同类型、大小为n的一维数组
    Mat(IntPtr ptr);
    Mat(string fileName, ImreadModes flags = ImreadModes.Color);
    Mat(int rows, int cols, MatType type, IntPtr data, long step = 0);

五、函数

  • CopyTo(Mat m);
  • CopyTo(Mat m, Mat mask);
  • Zeros(int rows, int cols, MatType type);
  • Ones(Size size, MatType type);
  • Diag(Mat d);
  • Eye(int rows, int cols, MatType type);

六、资料

「半不闲居士」的博客:
https://blog.csdn.net/m0_37874102/article/details/114023446

相关文章

  • OpenCV笔记

    1、Mat mat; 可以运用mat=Mat::zeros(r,c,type)来进行初始化,Mat类里面的zero...

  • 2019-01-27一周笔记汇总(索引)

    OpenCV | 基于Android系统详析Mat与Bitmap对象(创建、初始化、使用与转换 | 附大量demo...

  • flutter 基础二

    1.const与final的区别 const初始化的时候必须要赋值,final可以不赋值 const与final初...

  • opencv note

    Mat 的新建,初始化和访问 cv::Mat idepthMap(img_left->h, img_left->w...

  • OpenCV实现Mat与vector,Mat与数组互转

    OpenCV实现Mat与vector互转opencv Mat与Vector、Mat与数组、Vector与数组之间互...

  • 指针初始化与赋值

    1、指针的初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可...

  • 类属性赋值的先后顺序

    /* 对属性可以赋值的位置: ①默认初始化 ②显式初始化/⑤在代码块中赋值 ③构造器中初始化 ④有了对象以后,可以...

  • C++ String操作

    1.初始化 输出: 2.string对象赋值 与初始化不同,使用assign可以修改已经创建的string对象的值...

  • Chapter 13 Copying Controll

    这一章讲的更多是关于拷贝初始化, 拷贝赋值, 移动初始化, 移动赋值和析构的问题 拷贝初始化 相比于直接初始化的方...

  • 常量

    C#1.readonly 运行时常量可直接初始化时赋值或在构造函数中赋值2.const 编译时常量初始化时必须赋值...

网友评论

      本文标题:Mat的初始化与赋值

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