加载图像
cv::imread
- imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称
- 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值
- IMREAD_UNCHANGED
(flags = -1) 解码得到的方式读入图像(加载原图),不做任何改变 - IMREAD_GRAYSCALE
(flags = 0) 按单通道的方式读入图像(灰度图像) - IMREAD_COLOR
(flags = 1)按三通道方式读入图像(RGB图像)
opencv的处理中,一般都是对RGB格式的图像进行处理
用得比较多的就是IMREAD_COLOR
代码演示
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;//命名空间
int main()
{
// 读入一张图片
Mat img = imread("C:/Users/86176/Pictures/pics/lena(1).tiff",1);//参数
// 创建一个名为 "pic"窗口
namedWindow("pic");
// 在窗口中显示游戏原画
imshow("pic", img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
函数的原型是: cv::imread
所以再编写代码前需要定义命名空间
flag = 1
flag= 0
显示图像
cv::namedWindos 与cv::imshow
早期的opencv是需要销毁窗口的,现在的不用,能少写一行就少些一行
namedWindow
- WINDOW_NORMAL 用户可以改变窗口的大小,QT集成的时候会用
- WINDOW_AUTOSIZE 窗口自动调整以适应所显示的图像,不能人为修改窗口大小
- WINDOW_OPENGL 窗口创建的时候支持OpenGL
imshow
- 根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat对象
修改图像
cv::cvtColor
原型如下
void cv::cvtColor(
cv::InputArray src, // 源图像
cv::OutputArray dst, // 色彩空间转换后的图像
int code, // 颜色映射码
int dstCn = 0 // 输出的通道数 (0='automatic')
);
第三个参数的色彩映射可以根据需要查看手册
第三个参数可以不写,会自动设置
保存图像
cv::imwrite
- 第一个参数是文件的路径
- 第二个参数是指定文件
- 第三个参数是压缩参数,用于控制图片指令,也可以不设置
若要使用的话,就需要查看参数手册
代码演示
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读入图片
Mat img = imread("C:\\Users\\86176\\Pictures\\pics\\lena(1).tiff");
namedWindow("src pic", CV_WINDOW_AUTOSIZE);
imshow("src pic", img);
Mat output_img;
cvtColor(img, output_img, CV_RGB2HSV);//cvt转化的HSV图
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", output_img);
imwrite("D:\\output_img", output_img);
waitKey(0);
return 0;
}