开发环境:Opencv-4.0 VS2017
1、加载图像(cv::imread)
- imread()功能是加载图像文件成为一个Mat对象,第一个参数表示图像的文件名称,第二个参数表示加载的图象的类型
- IMERAD_UNCHANGED(<0)表示加载原图,不做任何改变
- IMREAD_GRAYSCALE(0)表示把原图作为灰度图加载进来
- IMREAD_CLOOR(>0)表示把原图作为RGB图像加载进来
- 注意:Opencv支持JPG、PNG、TIFF等常见格式图像文件加载
2、显示图像 (cv::namedWindos 与cv::imshow)
- nameWindow()功能是创建一个Opencv窗口,它是由Opencv自动创建与释放的,新版本无需用destroyWindow()销毁
- 常见用法nameWindow("WindowTitle", WINDOW_AUTOSIZE)
- WINDOW_AUTOSIZE会自动根据图像的大小,显示窗口大小,不能认为改变窗口大小
3、修改图像 (cv::cvtColor)
- imshow()根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口的名称,第二个是Mat对象
- cvtColor()的功能是将图像从一个色彩空间转换到另一个色彩空间,具有三个参数
- cvtColor(image,gray_image,COLOR_BG2GRAY) 括号中的三个参数分别表示:原图,色彩空间转换后的图像,目标色彩空间
4、保存图像(cv::imwrite)
- 保存图像文件到指定目录路径,如imwrite("C:\\test.jpg")或者imwrite("C:/test.jpg")
- 仅可以保存8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像
- 保存PNG格式的时候可以保存透明通道的图片,同时可以指定压缩参数
代码如下:
#include<iostream>
#include<opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat img, img_gray;
img = imread("H:\\1.jpg", IMREAD_UNCHANGED);//读入原图
img_gray = imread("H:\\1.jpg", IMREAD_GRAYSCALE);//读入灰度图
if (img.empty()) //检测是否成功读入图片
{
printf("could load the image...");
return -1;
}
namedWindow("原图", WINDOW_AUTOSIZE);
imshow("原图", img);
namedWindow("灰度图", WINDOW_AUTOSIZE);
imshow("灰度图", img_gray);
imwrite("H:\\GRAY_IMG.jpg", img_gray);
Mat BGR2HLS_img;
cvtColor(img, BGR2HLS_img, COLOR_BGR2HLS);//色彩格式转换
imshow("BGR2HLS_img",BGR2HLS_img);
//保存不同格式的图片
imwrite("H:\\BGR2HLS_IMG.jpg", BGR2HLS_img);
imwrite("H:\\BGR2HLS_IMG.png", BGR2HLS_img);
imwrite("H:\\BGR2HLS_IMG.tif", BGR2HLS_img);
waitKey(0);
return 0;
}
贴几张效果图
很丑吧,哈哈哈