Opencv3从头开始(一)图像读取、保存、显示

趁有时间把浅墨大佬的opencv入门重新理解一下,从头开始,有一起的小伙伴欢迎加入哦。
主要内容为实战代码,带有部分理解。
当然这次特地带上了仓老师一起学习。
标配框架

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;

int main(int argc, char* argv[]){
    Mat image;
    waitKey(0);
    return 0;
}

Mat类用于定义一个矩阵变量,常用于存储图像,也就是说,读取图像前必须要定义一个Mat类中。
图像读取
imread内有两个参数,默认为1,即默认显示3通。当修改为0时,为灰度图像。

Mat image,image_1;
image=imread("仓老师.jpg");
image_1=imread("仓老师.jpg",0);

窗口定义
namedWindow设置窗口标识和窗口类型

namedWindow("image",CV_WINDOW_NORMAL);//可以改变窗口的大小
namedWindow("image_1",CV_WINDOW_AUTOSIZE);//自动调整窗口,不能手动改变

图像显示
imshow有两个参数,一是窗口标识名,二是显示图像

imshow("image",image);
imshow("image_1",image_1);



关闭窗口

destroyWindow("image");
destroyAllWindows();

保存图片

imwrite("gray_cang.jpg",image_1);

给仓老师加个man?

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main(int argc, char* argv[]){
    Mat image,image_1;
    //图像显示
    image=imread("仓老师.jpg");
    image_1=imread("man.jpg");
    //namedWindow("image",CV_WINDOW_NORMAL);
    //namedWindow("image_1",CV_WINDOW_AUTOSIZE);
    //imshow("image",image);
    //imshow("image_1",image_1);
    resize(image_1,image_1,Size(100,100));
    Mat image_roi;
    image_roi=image(Rect(400,400,image_1.cols,image_1.rows));
    addWeighted(image_roi,0.8,image_1,0.3,0.2,image_roi);
    imshow("add",image);
    // destroyWindow("image");
    // destroyAllWindows();
    //imwrite("cang.jpg",image_1);
    waitKey(0);
    return 0;
}