Bootstrap

初学opencv c++学习笔记(三)图像对数的创建和赋值

目录

一、Mat类型

Mat基本结构:

头部:图像的属性(宽高,大小,通道数等)。

数据部分:图像数据。

二、Mat的创建

赋值法:

克隆法:

复制法:

创建空白图像

函数定义:

 参数解释:

二、使用步骤

代码演示



提示:以下是本篇文章正文内容,下面案例可供参考

一、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;
}


;