目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、Mat类型
opencv中用来存储图像的一种数据类型,图像以二维矩阵矩阵形式存储。
三通道的矩阵分别记录了三个通道的BGR值
Mat基本结构:
头部:图像的属性(宽高,大小,通道数等)。
数据部分:图像数据。
二、Mat的创建
(以下m1为已经存在的Mat类型,m2为新创建的Mat)
赋值法:
Mat m2=m1;
赋值法仅仅赋值了头部,为指针的重新指向,与m1指向同一个矩阵。
改变m2,同时就等于是在改变m1。
克隆法:
Mat m2=m1.clone();
复制法:
Mat m2;
m1.cloneTo(m2);
克隆和复制不仅复制头部,还复制了数据部分,产生了新的数据块。
此时,m2变化,m1不受影响。
创建空白图像
opencv中有很多创建空白图形的形式,下面列举几种常用用法:
函数定义:
Mat(int rows, int cols, int type);
Mat(Size size, int type);
Mat(Size size, int type, const Scalar& s);
参数解释:
rows:行数。
cols:列数。
Size():图像的大小。输入两个整型参量,分别为width(宽度)和height(高度)。
注意:rows=height
cols=width 顺序不要弄反
type:图像的类型。表示了矩阵中元素的类型以及矩阵的通道个数。
其命名规则为CV_+(位数)+(数据类型)+C(通道数)。
CV_8UC1, ..., CV_64FC4
举例说明CV_8UC3: 8表示图像为八位图像,2的八次方即256级。
U表示无符号整型,加上图像为八位图像,那么像素值为0-255。 C1表示通道值为1。
Scalar():为每一个像素赋值。若图像为彩色图像,输入三个参数,分别代表BGR。
二、使用步骤
代码演示
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img(Size(512,512),CV_8UC3,Scalar(100,0,255));
imshow("纯色图像", img);
waitKey(0);
return 0;
}