加载、修改、保存图像
- 加载图像
- imread
- 两个参数
- 1,图像的文件名
- 2,加载图像的类型flag(第二个参数),默认为1,RGB
- imread_unchanged(flag<0),加载原图,不做任何改变
- imread_grayscale(flag=0),加载灰度图像
- imread_color(flag>0),加载RGB图像
- 修改图像
- cvtColor
- 改变它的颜色空间,从一个颜色空间转换到另外一个颜色空间。
- 颜色空间:我们肉眼所看到的颜色都是由单色混合而成的,RGB三种颜色调和的时候可以调出上百万种颜色(256*256*256)
- 从一个色彩空间转换成另一个色彩空间通过此API实现
- 原因:在RGB色彩空间,亮度不是一个单一的通道,转换到其它色彩空间,亮度可以表示亮度、饱和度、色泽度等等,单一的通道表示饱和度,调节图像的饱和度就在这个通道上调节就行,调节图像的其它分别在其对应的通道上调整,对于我们的处理更加方便,处理完之后再进行反变换回RGB空间即可
- cvtCorlor(image,gray_image,COLOR_BGR2GRAY)三个参数
- 1,原图像
- 2,转换后输出的图像
- 3,从哪个色彩空间转换到哪个色彩空间去的
- CV_BGR2HLS(HLS,H色调,L亮度,S饱和度)
- 需要调整亮度和饱和度只需调整后面两个通道就行,有好多东西可以控制,调完之后反转换到RGB色彩空间
- 显示图像
- namedWindows
- 创建opencv窗口,由opencv自动创建与释放,无需销毁
- namedWindows(“Windows Title”,WINDOW_AUTOSIZE)
- WINDOW_AUTOSIZE,自动根据图像大小显示窗口,不能人为改变窗口大小
- WINDOWS_NORMAL,允许修改窗口大小
- imshow
- 根据窗口名称显示图像到指定窗口
- 第一个参数是窗口名称,第二个参数是Mat对象
- 保存图像
- imwrite
- 保存图像到指定路径
- 只有8bit,16bit的png,jpg,tiff文件格式而且是单通道或者三通道的BGR(通道顺序)图像才可以通过这种方式保存
- 保存png格式的时候可以保存透明通道的图片
- 可以指定压缩参数
int main(int argc, char** argv) {
Mat src = imread("D:\\VS2015\\images\\彩色lena图像.BMP", -1);
if (src.empty()) {
printf("Could not load image...");
return -1;
}
namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE);
imshow("test opencv setup", src);
namedWindow("output windows", CV_WINDOW_AUTOSIZE);
Mat output_image;
cvtColor(src, output_image, CV_BGR2HLS);
imshow("output windows", output_image);
imwrite("hlstestLena.png", output_image);
waitKey(0);
return 0;
}