一、加载图像 imread
imread功能是加载图像文件为一个Mat对象,第一个参数表示图像文件名称,第二个参数表示加载的图像是什么类型,常见的如下:
- IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变
- IMREAD_GRAYSCALE (0) 表示把原图作为灰度图像加载进来
- IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来
(opencv支持JPG、PNG、TIFF等常见格式图像文件加载)
二、显示图像 namedWindows 与 imshow
namedWindow(“WindowTitle”,CV_WINDOW_AUTOSIZE) 创建一个opencv窗口,且是由opencv自动创建与释放,不需要手动释放
- CV_WINDOW_AUTOSIZE 自动根据图像大小,调整窗口大小,不能认为的改变窗口大小
- CV_WINDOW_NORMAL 与QT集成时使用,允许修改窗口大小
imshow 根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二个参数是Mat对象
三、修改图像 cvtColor
cvtColor(image,gray_image,COLOR_BGR2GRAY);
cvtColor 把图像从一个色彩空间转换到另一个色彩空间,有三个参数,第一个参数表示原图像,第二个参数表示色彩空间转换后的图像,第三个参数表示原和目标图像的色彩空间,常用的有:COLOR_BGR2HLS、COLOR_BGR2GRAY等
四、保存图像 imwrite
- 保存图像文件到指定目录路径
- 只有8位、16位的PNG、JPG、TIFF文件格式而且是单通道或者三通道的BGR图像才可以通过此方式保存
- 保存PNG格式的时候可以保存透明通道的图片
- 可以指定压缩参数
五、代码演示
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
//Mat src = imread("images/01.jpg"); // 加载原图像
//Mat src = imread("images/01.jpg",IMREAD_GRAYSCALE); // 灰度图像
Mat src = imread("images/01.jpg", IMREAD_COLOR); // 作为RGB图像加载进来
if (src.empty())
{
printf("could not load image\n");
return -1;
}
namedWindow("opencv demo01", CV_WINDOW_AUTOSIZE); // 创建一个OpenCV窗口
imshow("opencv demo01", src);
namedWindow("output window", CV_WINDOW_AUTOSIZE);
Mat output_image;
cvtColor(src, output_image, COLOR_BGR2GRAY);
imshow("output window", output_image);
imwrite("images/hlstest.png", output_image);
imwrite("images/hlstest.tif", output_image);
imwrite("images/hlstest.jpg", output_image);
waitKey(0);
return 0;
}