C++Opencv图像对象Mat的创建和赋值

Mat中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+(通道数),因此在学习图像创建之前先了解一下基本的数据类型。
C++Opencv图像对象Mat的创建和赋值_第1张图片
S = 有符号整型 U = 无符号整型 F = 浮点型
CV_8U - 8位无符号整数
CV_8S - 8位有符号整数
CV_16U - 16位无符号整数
C1,C2,C3,C4则表示通道是1,2,3,4

#include 
#include

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_ (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";
}

C++Opencv图像对象Mat的创建和赋值_第2张图片

你可能感兴趣的:(Opencv(C++),opencv,c++,计算机视觉)