OpenCV学习01(C++)加载 修改 保存图像

注:OpenCV版本为3.4.2,版本不同可能头文件和函数会有一些差异,学习OpenCV前需要有图像处理相关的基础知识,相关书籍如:数字图像处理_第三版——冈萨雷斯 。 新手刚发博客,如果有什么不足的地方欢迎大家指正,可以一起学习交流!

读取图像(cv::imread)

官方解释:
使用函数 cv:imread() 读入图像。这幅图像应该在此程序的工作路径,
或者给函数提供完整路径,
第二个参数是要告诉函数应该如何读取这幅图片。
• IMREAD_COLOR(>0):读入一副彩色图像。图像的透明度会被忽略,
这是默认参数。
• IMREAD_GRAYSCALE(0):以灰度模式读入图像
• IMREAD_UNCHANGED(<0):读入一幅图像,并且包括图像的 alpha 通道

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

创建窗口(cv::namedWindos)

常见的用法namedWindow("WindosTitle ",WINDOW_AUTOSIZE)

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

WINDOW_NORMAL跟QT继承的时候会使用,允许修改窗口大小

显示图像(cv::imshow)

使用方法imshow(“WindosTitle”,ShowImg)

修改图像(cv::cvtColor)

函数形式: void cvCvtColor( const CvArr* src, CvArr* dst, int code );
功能说明:cvtcolor()函数是一个颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间转换。也可以转换为灰度图。
code 常用参数如CV_RGB2GRAY等,具体可查阅相关资料,因为参数太多了。。。
注释:灰度图像相关博客解释
RGB、HSV色彩空间

保存图像(cv::imwrite)

函数原型:bool cv::imwrite(const String & filename,InputArray img,const std::vector & params = std::vector())
函数参数:
filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。 img:要保存的图像。
params:表示为特定格式保存的参数编码。(它有一个默认值std::vector< int >(),所以一般情况下不用写。)
使用函数imwrite() 来保存一个图像。首先需要一个文件名,之后才
是你要保存的图像。

样例代码

#include
#include


using namespace cv;
using namespace std;

int main() {
	Mat OrImg,dst;
	OrImg = imread("D:\\File\\G\\images\\shiyuan.png", IMREAD_COLOR);

	//判断图像读取
	if (!OrImg.data) {
		printf("Could not load image...\n");
	}
	//显示原图像
	namedWindow("OrImg", WINDOW_AUTOSIZE);
	imshow("OrImg", OrImg);

	//修改为灰度图像
	cvtColor(OrImg, dst, CV_RGB2GRAY);

	//显示修改图像
	namedWindow("GRAYImg", WINDOW_AUTOSIZE);
	imshow("GRAYImg", dst);


	//保存图像
	bool i = imwrite("D:\\File\\G\\images\\shiyuanGray.png", dst);
	if (i) {
		cout << "保存成功";
	}
	else {
		cout << "保存失败";
	}

	//不加这个会闪退
	cvWaitKey(0);
}

效果图

OpenCV学习01(C++)加载 修改 保存图像_第1张图片

参考来源

本人也是学习opencv不久,如有错误,请各位前辈指导。
相关参考来自OpenCV官方教程中文版,大佬们的博客和B站视频:https://www.bilibili.com/video/BV1uW411d7Wf?p=2

你可能感兴趣的:(opencv,c++,图像处理)