opencv学习-003-图像Mat类型对象的拷贝、赋值和创建(.clone(),.copyTo(),Mat::zeros,Mat::ones)

opencv学习-003-图像对象的拷贝、赋值和创建(.clone(),.copyTo(),Mat::zeros,Mat::ones)

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int artc, char** argv) {
	Mat src = imread("E:/Desktop/gray.png");
	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);

	// 创建方法 - 克隆
	Mat m1 = src.clone();

	// 复制
	Mat m2;
	src.copyTo(m2);

	// 赋值法
	Mat m3 = src;

	// 创建空白图像
	Mat m4 = Mat::zeros(src.size(), src.type());
	Mat m5 = Mat::zeros(Size(512, 512), CV_8UC3);
	Mat m6 = Mat::ones(Size(512, 512), CV_8UC3);

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

	waitKey(0);
	return 0;
}

1. 先来说代码里m1,m2,m3

以上src是我们读取的数据,m1,m2是调用opencv中库函数.clone()和.copyTo()用来复制src图像,m3是一种简单的赋值,具体如下:

在这里插入图片描述

其中Mat的数据结构:
头部:图像的高宽,通道数,类型等等…
数据部分:像素数据,各个通道像素点的数据值是多少等等…是标量

2. 再来说代码里m4,m5,m6

m4,m5,m6都是创建出来的空白图像

Mat m4 = Mat::zeros(src.size(), src.type());

zeros方法内两参数第一个是对象的size,第二个是对象的数据类型,m4就是创建一个与src同大小,同数据类型的空白图像

Mat m5 = Mat::zeros(Size(512, 512), CV_8UC3);

m5就是创建一个512*512像素,数据类型为CV_8UC3的空白图像


CV_8UC3:其实就是像素值的数据类型
一般的图像文件格式使用的是 Unsigned 8bits,CvMat矩阵对应的参数类型就是
CV_8UC1CV_8UC2CV_8UC3
(最后的1、2、3表示通道数,譬如RGB3通道就用CV_8UC3

而float 是32位的,对应CvMat数据结构参数就是:CV_32FC1CV_32FC2CV_32FC3
double是64bits,对应CvMat数据结构参数:CV_64FC1CV_64FC2CV_64FC3等。

3. 卷积核的创建

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

此处为创建一个锐化算子,在这一节先写出来创建形式,后序再着重看

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值