一.简介
在OpenCV中,可以用C++语法的Mat类来表示一张图像
也可以用C语法的lpllmage或CvMat结构体来表示一张图像
1.单通道像素值
2.多通道像素值
OpenCV默认颜色顺序为BGR
二.成员公有函数
cv::Mat类能够自动管理内存,由矩阵头和指向存储所有像素值的矩阵的指针构成
cv::Mat类表示一个n维的密集数值单通道或多通道数组,它可用于存储实数或复数值的向量和矩阵 灰度和彩色图像 体素 向量场 点云 张量 直方图等
1.常用的成员函数
Mat::Mat()
Mat::~Mat()
Mat::row // 创建一个具有指定了矩阵头中行数的参数的矩阵
Mat::col // 创建一个具有指定了矩阵头中列数的参数的矩阵
Mat::rowRange // 为指定的行span创建一个新的矩阵头,可取指定行区间元素
Mat::colRange // 为指定的列span创建一个心得矩阵头,可取指定列区间元素
Mat::clone // 创建一个数据及其基础数据的完整副本
Mat::copyTo //
Mat::convertTo
Mat::zeros
Mat::ones
Mat::channels
Mat::empty
Mat::at
Mat::isContinuous() //判断图像存储是否连续
2.不常用的成员函数
Mat::addref()
Mat::adjustROI()
Mat::assignTo()
Mat::at()
Mat::begin()
Mat::channels()
Mat::checkVertor()
Mat::clone()
Mat::col()
Mat::colRange()
Mat::convertTo()
Mat::copySize()
Mat::copyTo()
Mat::create()
Mat::cross()
Mat::deallocate()
Mat::depth()
Mat::diag()
Mat::dot()
Mat::elemSize()
Mat::elemSize1()
Mat::empty()
Mat::end()
Mat::eye()
Mat::inv()
Mat::isContinuous()
Mat::isSubmatrix()
Mat::locateROI()
Mat::mul()
Mat::ones()
Mat::pop_back()
Mat::ptr()
Mat::push_back()
Mat::push_back_()
Mat::release()
Mat::reserve()
Mat::reshape()
Mat::resize()
Mat::row()
Mat::rowRange()
Mat::setTo()
Mat::step1()
Mat::t()
Mat::total()
Mat::type()
Mat::zeros()
3.成员数据
4.构造函数
Mat() // 默认构造函数
Mat(int row,int cols,int type)
Mat(Size size,int type)
Mat(int rows,int cols,int type,const Scalar& s)
Mat(Size size,int type,const Scalar& s)
Mat(int ndims,const int* sizes,int type)
Mat(int ndims,const int* sizes,int type,const Scalar& s)
Mat(const
Mat&
m)
// 拷贝构造函数
Mat(int rows,int cols,int type,void* data,size_t step=AUTO_STEP)
Mat(Size size,int type,void* data,size_t step=AUTO_SETP)
Mat(int ndims,const int* sizes,int type,void* data,const size_t* steps=0)
Mat(const Mat& m,const Range& rowRange,const Range& colRange=Range::all());
Mat(const Mat& m,const Rect& roi);
Mat(const Mat& m,const Range* ranges);
Mat(const CvMat* m,bool copyData=false);
Mat(const CvMatND* m,bool copyData=false);
Mat(const IplImage* img,bool copyData=false);
templateexplicit Mat(const vector<_tp>& vec,bool copyData=false);
templateexplicit Mat(const Vec<_tp>& vec,bool copyData=true);
template
三.cv::Mat 类型转换
1.cv::Mat 类转换为 IplImage 类型和 CvMat 类型
cv::Mat img;
CvMat cvMatImg=img;
IplImage iplImage = img;
2.IpIImage 类型和 CvMat 类型转换为 cv::Mat 类型
IplImage* iplImg = cvLoadImage("a.jpg");
cv::Mat img(iplImg,true);