图片的读取,通过函数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
}
结果: