OpenCV学习——图像对象的创建与赋值

一、创建空白图像

Mat m3 = Mat::zeros(Size(8, 8), CV_8UC3);
std::cout << "width" << m3.cols << "\n" << "height:" << m3.rows << "\n" << "channels:" << m3.channels() << std::endl;
std::cout <<"m3图像的像素输出"<<"\n" << m3 << std::endl;

Size()表示二维图像的宽与高;
CV_8UC3表示一个像素有3个通道,而每个通道的每个像素占8bit的内存;

输出结果如下:

 

二、创建一个ones图像

Mat m4 = Mat::ones(Size(8, 8), CV_8UC3);
std::cout << "m4图像的像素点输出"<<"\n" << m4 << std::endl;

输出结果如下:


可以看出除了第一个通道为1,其他通道皆为0,要对其余通道进行修改,需进行赋值操作

 

三、通道的赋值

运用Scalar函数定义通道的值

Mat m3 = Mat::zeros(Size(8, 8), CV_8UC3);
m3 = Scalar(127,127,127);

结果如下: 

 

 四、克隆与赋值

1、克隆与拷贝

//克隆
Mat m5 = m3.clone(); 
m5 = Scalar(0, 155, 255);
//拷贝
Mat m6;
m3.copyTo(m6);
m6 = Scalar(0, 155, 255);

//展示结果
imshow("m3克隆后", m3);
imshow("m5", m5);
imshow("m6", m6);

结果如下:

 

可以看出,m5,m6对m3进行了克隆与拷贝,修改其灰度值并不会影响m3。

2、赋值

Mat m7 = m3;
m7 = Scalar(0, 155, 255);

imshow("m3赋值后", m3);
imshow("m7", m7);

 

 将m3赋值给m7,改变m7的通道灰度值,竟然会改变m3的灰度值。此处可以把m7看做一种指针的解引用,此处是修改指针指向的值,而这个指针指向的值就是m3。

 

五、 创建一个矩阵

Mat kernel = (Mat_<char>(3,3) << 0,-1,0,
-1,5,-1,
0,-1,0 );
std::cout << kernel << std::endl;

输出结果:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值