加载、修改、保存图像
1、加载图像(用cv
::
imread)
imread功能加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示图像类型。图像类型支持常见的三个参数值:
-
IMRAED_UNCHANGED(<0)表示加载原图,不做任何改变;
-
IMREAD_GRAYSCALE(0)表示将原图作为灰度图像加载进来;
-
IMREAD_COLOR(>0)表示将原图作为RGB图像加载进来;
-
注意:opencv支持jpg、png、tiff等常见格式图像文件加载;
2、修改图像(cv
::
cvtColor)
-
cvtColor功能是把图像从一个色彩空间转换到另一个色彩空间。有三个参数,第一个参数表示原图像,第二个参数表示色彩空间转换之后的图像,第三个参数表示源和目标色彩空间如:COLOR_BGR2HLS、COLOR_BGR2GRAY等。(H-色相:即色彩基本属性如黄色、红色等;L-亮度;S-饱和度:指色彩纯度,越高色彩则越纯,低则逐渐变灰);
-
cvtColor(image,gray_image,COLOR_BGR2GRAY);
3、保存图像(cv
::
imwrite
)
-
保存图像文件到指定目录路径;
-
只有8位、16位的png、jpg、tiff文件格式而且是单通道或者三通道的图像才可以保存
-
保存png格式的时候可以保存透明通道的图片
-
可以指定压缩参数
4、显示图像(cv::namedWindows与cv::imshow
)
-
namedWindows功能是创建一个opencv窗口,它是由opencv自动创建与释放的 ;
-
常见用法是namedWindow("Window title",WINDOW_AUTOSIZE),WINDOW_AUTOSIZE自动根据图像大小来显示窗口大小;
-
WINDOW_NOMAL在QT集成的时使用,允许修改窗口大小;
-
imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象;
示例测试代码如下:
#include <opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("E:/Vs_ws/palmprint_reg/Project2/psb.jpg",IMREAD_UNCHANGED);
if (src.empty()) {
printf("could not load image...\n");
return -1;
}
namedWindow("test opencv setup", WINDOW_AUTOSIZE);
imshow("test opencv setup", src);
namedWindow("output_window", WINDOW_AUTOSIZE);
Mat output_image;
cvtColor(src, output_image, COLOR_BGR2HLS);
imshow("output_window", output_image);
imwrite("E:/Vs_ws/palmprint_reg/Project2/test.tiff", output_image);
waitKey(0);
return 0;
}