• 图像与大数组类型


      动态可变存储

      大数组类型中最主要的是,cv::Mat,可以看成是OpenCV库, C++ 实现的核心内容;OpenCV库的绝大多数函数,或是cv::Mat的成员,或是以cv::Mat作为参数,或是返回值是cv::Mat,或是其一或是所有; cv::Mat一般用于任意维度的稠密数组,这个稠密的意思是与数组单元相对应,都有一个数据存放在内存,哪怕这个数组单元存放的是零;大多数的图像存储稠密数组;

      使用稀疏数组的是直方图,cv::SparseMat

      The cv::Mat 类,多维稠密数组

      cv::Mat类可以作为任意维度的数组使用,其数据可以看做是以按照栅格扫描顺序存储的n维数组;在一维数组中,元素是按顺序排列的;在一个二维数组中,数据按行组织的,每一行也按顺序排列;对于三维数组,所有的通道都被行填充,每一个通道同样按顺序排列;

      所有的矩阵都包含,一个表示它所包含数组类型的元素flag,一个表示其维度的元素dims,分别表示行列的数目的元素rows和cols(dims不大于2),一个指示数据真正存储位置的data指针,一个表示该内存区域有多少个引用的refcount元素;

      cv::Mat中的元素可以是一个简单的数字,也可以是多个数字,在包含多个数字的时候,它就被称为多通道数组;

      构造一个数组

      可以用cv::Mat实例化一个对象,构造一个数组,该数组没有大小也没有数据类型,可以利用对象调用Create()函数,参数为行、列、类型来分配数据;

    cv::Mat m;
    // Create data area for 3 rows and 10 columns of 3-channel 32-bit floats
    m.create( 3, 10, CV_32FC3 );
    // Set the values in the 1st channel to 1.0, the 2nd to 0.0, and the 3rd to 1.0
    m.setTo( cv::Scalar( 1.0f, 0.0f, 1.0f ) );

      等同于

    cv::Mat m( 3, 10, CV_32FC3, cv::Scalar( 1.0f, 0.0f, 1.0f ) );
  • 相关阅读:
    C#-练习题
    C#-命名空间(十五)
    C#-枚举(十三)
    C#-多态(十二)
    C#-继承(十一)
    C#-结构体(十)
    C#-类(九)
    C#-方法(八)
    二叉树深度遍历和广度遍历
    iOS main.m解析
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/12973412.html
Copyright © 2020-2023  润新知