主要记录Mat数据结构的一些操作
P3 Mat 数据结构的一些操作
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
//读取一个文件并展示,如果文件地址不正确,打印相关信息
mat src;
src = imread("./images/lena.png");
if (src.empty()) {
cout << "can't find the file " << endl;
return -1;
}
namedwindow("input", cv_window_autosize);
imshow("input image", src);
//创建一个新的mat 对象
mat dst;
dst = mat(src.size(), src.type());
dst = scalar(127, 0, 256);
namedwindow("output", cv_window_autosize);
imshow("output", dst);
//创建一个小的mat对象,并打印矩阵内的信息
mat m(3, 3, cv_8uc3, scalar(0, 0, 255));//cv_8u3c 一个三通道图像
cout << "m =" << endl << m << endl;
//深拷贝一个mat 对象
mat clone_src = src.clone();// src.copyto(clone_src) 也是深拷贝
namedwindow("output clone ", cv_window_autosize);
imshow("output clone", clone_src);
//转换图像通道数,并打印结果
mat src_gray;
cvtcolor(src, src_gray, cv_bgr2gray);
namedwindow("output gray image", cv_window_autosize);
imshow("output gray image", src_gray);
printf("input image channels :%d \n", src.channels());
printf("output image channels :%d \n ", src_gray.channels());
waitkey(0);
return 0;
}