Mat能存储的数据类型:
_Tp:用户自定义的数据类型
Mat类的创建
1、利用矩阵宽、高和类型参数创建Mat类
cv:Mat::Mat(int rows, int cols, int type);
rows:构造矩阵的行数
cols:矩阵的列数
type:矩阵中存储的数据类型。此处除了CV_8UC1\CV_64FC4等从1到4通道以外,还提供了更多通道的参数,通过CV_8UC(n)中的n来构建多通道矩阵,其中n最大可以取到512.
2、利用矩阵Size()结构和数据类型参数2创建Mat类
cv:Mat:Mat(Size size, int type);
size:2D数组变量尺寸,通过Size(cols, rows)进行赋值。
type:矩阵中存储的数据类型。此处除了CV_8UC1\CV_64FC4等从1到4通道以外,还提供了更多通道的参数,通过CV_8UC(n)中的n来构建多通道矩阵,其中n最大可以取到512.
3、利用已有Mat类创建新的Mat类
cv:Mat:Mat(const Mat & m, const Range & rowRange, const Range & colRange = Range::all());
m:已经构建完成的Mat类矩阵数据。
rowRange:在已有矩阵中需要截取的行数范围,是一个Range变量,例如从第2行到第5行可以表示为Range(2,5)。
colRange:在已有矩阵中需要截取的列数范围,是一个Range变量,例如从第2列到第5列可以表示为Range(2,5),当不输入任何值时表示所有列都会被截取。
Mat类的赋值
1、类方法赋值
eye:单位对角阵
diag:对角矩阵
ones:元素全为1的矩阵
zeros:元素全为0的矩阵
2、
cv::Mat::Mat(int rows, int cols, int type, const Scalar & s);
3、枚举法赋值
cv::Mat a = (cv::Mat_<int>(3, 3)<<1, 2, 3, 4, 5, 6, 7, 8, 9);
图像加载(读取)
cv::Mat cv::imread(const String & fliename, int flags = IMREAD_COLOR);
filename:需要读取图像的文件名称,包含图像地址、名称和图像文件扩展名
flags:读取图像形式的标志
图像显示
void cv::namedWindow(const String & winName, int flags = WINDOW_AUTOSIZE);
winName:窗口名称,作用窗口的标识符
flags:窗口属性设置标志
void cv::imshow(const String & winname, InputArray mat);
winname:要显示图像窗口的名字,用字符串形式赋值
mat:要显示的图像矩阵
图像保存
bool cv::imwrite(const String & filename, InputArray img, const std::vector<int> & params = std::vector<int> ());
filename:保存图像的地址和文件名,包含图像格式
img:将要保存的Mat类矩阵变量
params:保存图片格式属性设置标志
视频加载(读取)/摄像头调用
cv::VideoCapture::VideoCapture(const String & fileName, int apiPreference = CAP_ANY);
fileNmae:读取的视频文件或者图像序列名称
apiPreference:读取数据时设置的属性,例如编码格式、是否调用OpenNI等
cv::VideoWriter::VideoWriter(const String filename, int fourcc, double fps, Size frameSize, bool isColor = true);