opencv图像处理教程C++(二)图像的读入、显示、修改、保存

图片的读取,通过函数cv::imread()来实现的;显示通过函数cv::imshow()来实现;而保存则通过cv::imwrite()来实现

#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include<opencv2/face.hpp>
#include<iostream>
#include<math.h>
#include <string> 
#include<fstream> 
using namespace cv::face;
using namespace cv;
using namespace std;
using namespace cv::xfeatures2d;

int main()
{
    /*
    IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变
    IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来
    IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来,默认 3通道没有 alpha
    */
    Mat src = imread("C:/Users/Administrator/Desktop/pic/5.jpg", IMREAD_COLOR);//可以不写第二个参数,默认原图
    /*读取图片,OpenCV支持:
    Windows位图-.bmp, *.dib
    JPEG文件 - *.jpeg, *.jpg, *.jpe
    PNG图片 - *.png
    便携文件格式- *.pbm, *.pgm, *.ppm
    Sun rasters光栅文件 - *.sr, *.ras
    TIFF 文件 - *.tiff, *.tif
    */
    if (src.empty())
    {
        cout << ("could not load image...") << endl;

    }
    namedWindow("input", CV_WINDOW_AUTOSIZE);//创建窗口,自动大小,可以省略这一步
    imshow("input", src);//显示图片,这个也会创建一个窗口,如果这个winname与上面窗口的winname不一致,会导致有两个窗口

     //第二个窗口显示转换了颜色空间的图片
    //namedWindow("output", CV_WINDOW_AUTOSIZE);
    Mat output;
    //cvtColor(src, output, CV_BGR2GRAY);//RGB图像转换成灰度图,实际上,三通道RGB的图像的顺序是 BGR,所以 CV_BGR2GRAY 是BGR开头
    //cvtColor(src, output, CV_BGR2HLS);//RGB图像转换成HLS颜色空间(专调亮度?),色相(H)、亮度(L)、饱和度(S)。 OpenCV提供转换的颜色空间还有其他很多,待研究..
    cvtColor(src, output, CV_BGR2HSV);//RGB图像转换成HSV颜色空间(专调饱和度?),色调(色相)(H),饱和度(S),明度(亮度)(V)
    imshow("output", output);//显示第二个图片
                                     //保存图片
    imwrite("C:/Users/Administrator/Desktop/pic/w5.jpg", output);//保存的图片的格式由给的字符串决定,给png就是png,jpg就是jpg,tif就是tif,write的结果:png比jpg大,tif几乎是原图大小
    waitKey(0);//一检查到键盘活动就关闭,参数delay如果传0表示阻塞等待键盘事件,传大于0表示只阻塞等待多少毫秒,键盘无响应返回-1
}

结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_26907755/article/details/81661824
今日推荐