Mat中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+(通道数),因此在学习图像创建之前先了解一下基本的数据类型。
S = 有符号整型 U = 无符号整型 F = 浮点型
CV_8U - 8位无符号整数
CV_8S - 8位有符号整数
CV_16U - 16位无符号整数
C1,C2,C3,C4则表示通道是1,2,3,4
#include <iostream>
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;
void test301()
{
Mat src = imread("D:/IMG_4325.JPG");
Mat dst1, dst2;
dst1 = src.clone(); //克隆
src.copyTo(dst2); //拷贝
//创建空白图像
Mat m3 = Mat::zeros(Size(8,8), CV_8UC3); //CV_8UC3 8位无符号3通道
//ones用于多通道时,只有一个通道为1,其余都为0
//m3 = 127 将第一通道赋值为127
m3 = Scalar(127, 127, 127); //将3个通道的值都赋值为127
std::cout << "width:" << m3.cols << " Height:" << m3.rows
<< " Channels:" << m3.channels() << endl;
cout << m3 << endl;
//主要用于卷积核定义
Mat m4 = (Mat_ <char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, 1, 0);
Mat M(7, 7, CV_32FC2, Scalar(1, 3));
//上面的代码表示:创建一个2通道,且每个通道的值都为(1,3),深度为32,7行7列的图像矩阵。CV_32F表示每个元素的值的类型为32位浮点数,C2表示通道数为2,
// Scalar(1,3)表示对矩阵每个元素都赋值为(1,3),第一个通道中的值都是1,第二个通道中的值都是3.
}
int main()
{
test301();
std::cout << "Hello World!\n";
}