Mat对象在opencv中主要用来存储图片

一,读取一张图片

Mat src;
src = imread("F:/opencv/InputImg/h4.jpg");
if (src.empty()) {
cout << "文件打开失败!" << endl;
return -1;
}
namedWindow("input img", CV_WINDOW_AUTOSIZE);
imshow("input", src);

二,创建一个空白的画布

//创建一个空白的画布
Mat dst;
dst = Mat(src.size(), src.type());
dst = Scalar(255, 255, 255);//设置画布的颜色
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);

三,克隆

//克隆
Mat dst2 = src.clone();
namedWindow("clon", CV_WINDOW_AUTOSIZE);
imshow("CLON", dst2);
const uchar * firstRow = src.ptr<uchar>(0); //获取第一行的地址的值
cout << "firstrow" << *firstRow << endl;
cout << "通道数" << src.channels() << endl;

四,输出M对象

//输出M变量
Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255)); // 2 2 行列数,8 8位 ,uc uchar, 3 三通道
cout << "M" << endl << M << endl;

五,部分复制和完全复制

//部分复制,完全复制
Mat B(src); //部分复制,只复制src的头指针 指向同一个数据
Mat src2 = src.clone(); //完全复制复制所有的数据
Mat g;
src.copyTo(g); //完全复制

完整代码

#include <opencv2\opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
int main(int argc,char **argv) {
Mat src;
src = imread("F:/opencv/InputImg/h4.jpg");
if (src.empty()) {
cout << "文件打开失败!" << endl;
return -1;
}
namedWindow("input img", CV_WINDOW_AUTOSIZE);
imshow("input", src);
//创建一个空白的画布
Mat dst;
dst = Mat(src.size(), src.type());
dst = Scalar(255, 255, 255);//设置画布的颜色
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
//克隆
Mat dst2 = src.clone();
namedWindow("clon", CV_WINDOW_AUTOSIZE);
imshow("CLON", dst2);
const uchar * firstRow = src.ptr<uchar>(0); //获取第一行的地址的值
cout << "firstrow" << *firstRow << endl;
cout << "通道数" << src.channels() << endl;
//输出M变量
Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255)); // 2 2 行列数,8 8位 ,uc uchar, 3 三通道
cout << "M" << endl << M << endl;
//部分复制,完全复制
Mat B(src); //部分复制,只复制src的头指针 指向同一个数据
Mat src2 = src.clone(); //完全复制复制所有的数据
Mat g;
src.copyTo(g); //完全复制
Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); //定义小数组
filter2D(src, dst, -1, kernel);//-1 位置代表深度 锐化操作
Mat m2 = Mat::zeros(src.size(), src.type()); //黑色图像 zeros代表0,即为黑色
waitKey(0);
return 0;
}

OpenCv-003-Mat对象_#include