OpenCV:加载、修改、保存图片(加载RGB生成灰度图片)

在这里插入图片描述

加载图像(cv::imread)

  • imread功能是加载图像成为一个Mat对象,其中第一个参数表示图像文件名称

  • 第二个参数,表示加载图像的类型,支持常见三个参数:

  • IMREAD_UNCHANGED(<0)表示加载原图,不做任何改变

  • IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来

  • IMREAD_COLOR(<0)表示把原图作为RGB图像加载进来

  • OpenCV支持JPG、PNG、TIFF等常见格式的图片文件加载

显示图像(cv::namedWindow 和 cv::imshow)

  • nameWindow功能是创建一个OpenCV窗口,它是由OpenCV自动创建和释放的,你无需销毁它

  • 常见用法nameWindow(“Window Title”, WINDOW_AUTOSIZE)

  • WINDOW_AUTOSIZE会根据图像大小,显示窗口大小,不能人为改变窗口大小

  • WINDOW_NORMAL与QT集成的时候回使用,允许修改窗口大小

  • imshow根据窗口名称显示图像到指定窗口上去,第一个参数是窗口名称,第二个参数是Mat对象

修改图像(cv::cvtColor)

  • cvtColor的功能是将图像从一个彩色空间转换到另一个彩色空间,有三个参数,第一个参数表示源图像,第二个参数表示彩色空间转换之后的图像,第三个参数表示源图像和目标图像的空间,如:COLOR_BGR2HLS、COLOR_BGR2GRAY等

  • cvtColor(image, gray_image, COLOR_BGR2GRAY);

保存图像(cv::imwrite)

  • 保存图像文件到指定目录路径

  • 只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR图像才可以通过这种方式保存

  • 保存PNG格式的时候可以保存透明通道的图片

  • 可以指定压缩参数

在这里插入图片描述

示例代码

#include <iostream>
#include <opencv2/opencv.hpp>
#include <math.h>

using namespace std;
using namespace cv;

int main() {
	// 加载一张普通图片
	Mat src = imread("C:\\Users\\Administrator\\Desktop\\background.png");
	if (src.empty()) {  // 判断是否获取到了图片
		printf("Could not load image!\n");
		return -1;
	}
	// 将这张普通图片显示出来
	namedWindow("opencv setup demo", WINDOW_AUTOSIZE);
	imshow("opencv setup semo", src);

	// 显示灰度图像
	namedWindow("opencv out put window", WINDOW_AUTOSIZE);
	Mat output_image;
	cvtColor(src, output_image, COLOR_BGR2GRAY);
	imshow("opencv out put window", output_image);

	// 保存图片,具体格式按照自己写的文件后缀
	imwrite("C:\\Users\\Administrator\\Desktop\\changed.png", output_image);

	waitKey(0);  // 让程序在这里卡住,不然会一下子退出

	return 0;
}

显示效果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Nire_Yeyu/article/details/105389235