OpenCV笔记1-加载、显示、修改和保存图像

1 加载、显示、修改和保存图像

1.1 加载图像(cv::imread)

imread 功能是加载图像文件成为一个Mat对象。
函数原型:
Mat imread(const String& filename,int flags = IMREAD_COLOR);

  • 第一个参数表示图像文件名称。
  • 第二个参数表示加载的图像是什么类型,支持常见的三个参数值
    • IMREAD_UNCHANGED(<0)表示加载原图,不做任何改变
    • IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来
    • IMREAD_COLOR(>0)表示把原图作为RGB图像加载进来

1.2 显示图像(cv::namedWindow与cv::imshow)

1.2.1 namedWindow

  • namedWindow功能是创建一个OpenCV窗口,它是由OpenCV自动创建于释放,无需自行销毁
  • 函数原型
    void nameWindow(const string& winname,int flags = WINDOW_AUTOSIZE) ;
    • 第一个参数是窗口名
    • 第二个参数是窗口标识
      • WINDOW_AUTOSIZE:其会自动根据图像大小,显示窗口大小,不能认为改变窗口大小
      • WINDOW_NORMAL:用户可以改变这个窗口大小

1.2.2 imshow

  • 功能:根据窗口名称显示图像到指定的窗口上去
  • 函数原型:
    void imshow(const string& winname, InputArray image)
    • 第一个参数:窗口名字
    • 第二个参数:要显示的图像,为Mat对象

1.3 修改图像(cv::cvtColor)

  • 功能:把图像从一个彩色空间转换到另一个彩色空间。
  • 函数原型
    void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 );
    • 第一个参数:输入图像,即要进行颜色空间变换的原图像,可以为Mat类。src = source
    • 第二个参数:输出图像,即进行颜色空间变换后存储图像,也可以Mat类。dst = destination
    • 第三个参数:转换的代码或标识,如:COLOR_BGR2HLS (HLS为色相H、亮度L、饱和度S)、COLOR_BGR2GRAY (GRAY为灰度) 等。

1.4 保存图像(cv::imwrite)

  • 功能:保存图像文件到制定目录路径
  • 函数原型
    bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
    • 第一个参数:需要写入的文件名,要加后缀,如"test.jpg"
    • 第二个参数:表示Mat类型的图像数据
    • 第三个参数:编码格式
  • 只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存
  • 保存PNG格式的时候可以保存透明通道的图片
  • 可以指定压缩参数。

1.5 示例代码

#include<opencv2/opencv.hpp> //引入所需的类和函数的头文件
#include<iostream>

using namespace std;
using namespace cv;		//在OpenCV的C++API中,所有类和函数都在命名空间cv内定义

int main()
{
	Mat  image;		//创建一个Mat对象
	image = imread("D:/C++Project/OpenCVProject/test.jpg");	//读取图片,image相当于一个容器,存储读取的图片
	if (image.empty()) {	//读取文件为空
		cout << "could not find the image resource..." << endl;
		return -1;
	}

	namedWindow("My image", WINDOW_AUTOSIZE);		//创建窗口
	imshow("My image", image);						//显示窗口

	namedWindow("output window", WINDOW_AUTOSIZE);
	Mat output_image;
	cvtColor(image, output_image, COLOR_BGR2GRAY);   //BGR转化成GRAY,即将彩色图像转换成灰度图像
	imshow("output_window", output_image);

	imwrite("D:/C++Project/OpenCVProject/hlstest.png", output_image);      //保存为png图像
	
	waitKey(0);
	/*
	waitkey:在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下按键,则接续等待(循环)
	设置waitKey(0),则表示程序会无限制的等待用户的按键事件
	*/
	return 0;
}

猜你喜欢

转载自blog.csdn.net/CC_monster/article/details/86619280