Mat分为矩阵头和指向存储数据的矩阵指针两部分。
cv::Mat a; //创建一个名为a的矩阵头
a = cv::imread("test.jpd"); //向a中赋值图像数据,矩阵指针指向像素数据
cv::Mat b = a; //复制矩阵头,并命名为b
cv::Mat A = Mat_<double>(3,3); //创建一个3*3的矩阵用于存放double类型数据
cv::Mat a(640,480,CV_8UC3); //创建一个640*480的3通道矩阵用于存放彩色图像
cv::Mat a(3,3,CV_8UC1); //创建一个3*3的8位无符号整数的单通道矩阵
cv::Mat a(3,3,CV_8U); //创建单通道矩阵,c1标识可以省略
cv::Mat::Mat();
cv::Mat::Mat(int rows,
int cols,
int type
)
cv::Mat(Size size(),
int type
)
cv::Mat a(Size(480,640),CV_8UC1); //构造一个行为640、列为480的单通道矩阵
cv::Mat b(Size(480,640),CV_32FC3); //构造一个行为640、列为480的3通道矩阵
cv::Mat::Mat(const Mat & m);
提示:如果希望复制两个一模一样的Mat类而彼此之间不会受影响,那么可以使用m=a.clone()实现
cv::Mat::Mat(const Mat & m,
const Range & rowRange,
const Range & rowRange = Rang::all()
)
cv::Mat b(a, Rang(2,5), Rang(2,5)); //从a中截取部分数据构造b
cv::Mat c(a, Rang(2,5)); //默认最后一个参数构成c
原文:https://www.cnblogs.com/richblog/p/15088664.html