opencv稠密矩阵基本概念

来源:互联网 发布:按键精灵抓取网页数据 编辑:程序博客网 时间:2024/05/16 01:31

概念:

稠密矩阵(mat)

    行(rows):懒得说

    列(cols):懒得说

    宽(width):懒得说

    高(height):懒得说

    元素(element):

元素本身是一个向量,但是这个向量最多有四维(可以是(1*1),(1*2),(1*3),(1*4)或者是以上的转置),因为总有一个纬度是1,opencv用channels(通道数)来代替纬度.元素只能使用基本数据类型(比如,int,float,double之类的),opencv用depth(位深)来表示不同的元素,

综上,元素类型就是一个有限集合,这个集合opencv是用一些列枚举值表示的,opencv称这些枚举值为type

比如:CV_32FC4(顾名思义,表示4channels,每个channel保存一个float,也就是C++里面的float[4]):ps(内容相关CV_MAKETYPE,cv::DataType,但是俺懒得说)

size_t cv::Mat::elemSize() const;顾名思义,返回element的大小,比如CV_32FC4的大小就是4*sizeof(float)->16byte

size_t cv::Mat::elemSize1() const;顾名思义,返回element一个通道的元素大小,比如比如CV_32FC4的elemSize1大小就是sizeof(float)->4byte

    step(行距,byte)

为什么会有这个概念呢?因为opencv行与行之间可能不是紧密排列的,比如一张(7*7)的灰度图,为了加快访问速度,行内存对齐到4,这张灰度图就可能存成(7*8),每一行的最后一个byte没用,这时候width*elemSize()=7,而行距step=8.另一方面,opencv支持子矩阵(roi),行距来自父矩阵.

易用函数:

size_t step1(int i=0) const;// step/elemSize1()


0 0
原创粉丝点击