Mat是opencv的一种基本数据结构,该数据结构分为header和data两部分
头部分存储着Mat的一些基本属性:
表示矩阵的维度,分为二维和三维
指向数据的指针,类型为*uchar,但是有时候需要将data强制类型转换
Mat src(1000,1000,CV_32F);
float* myptr = (float*)src.data;
矩阵的行数和列数
矩阵的大小
每一行的字节数
https://blog.csdn.net/yiyuehuan/article/details/43701797
返回像素总数
每一行的通道数
获取opencv mat的行指针,具体用法如下
//“()”里面的内容为行数,"<>"里面的内容表示指针类型
const uchar* inData = tempMat.ptr<uchar>(i);//表示第i+1行,指针为uchar
float* outData = imgAverage.ptr<float>(i);
//如果判断为Continuous,则可以很轻松进行遍历
int nr=image.rows;
int nc=image.cols;
if(image.isContinuous())
{
nr=1;
nc=nc*image.rows*image.channels();
}
for(int i=0;i<nr;i++)
{
const uchar* inData=image.ptr<uchar>(i);
uchar* outData=outImage.ptr<uchar>(i);
for(int j=0;j<nc;j++)
{
*outData++=*inData++;
}
}
这里需要注意一下,如果图像时连续的,即每行都没有空白,则可以利用ptr达到data的效果
单个element的通道数
返回单个通道的基本数据类型
#define CV_8U 0
#define CV_8S 1
#define CV_16U 2
#define CV_16S 3
#define CV_32S 4
#define CV_32F 5
#define CV_64F 6
#define CV_USRTYPE1 7
这个elemSize()表示每个通道所占的byte数,即为几个字节
矩阵一个通道所占的字节数
返回单个像素的元素类型,包括通道数与每个通道的数据类型
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)