OpenCV学习笔记——加载、修改、保存图片(01)

一、加载图像(cv::imread):

1.imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型;

2.支持常见的三个参数值:

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

2)IMEREAD_GRAYSCALE( 0 )表示作为灰度图像加载;

3)IMREAD_COLOR( >0 )表示把原图作为RGB图像加载。
二、修改图像(cv::cvtColor):

改变颜色空间,从一个颜色空间改变为另一个颜色空间。
三、显示图像(cv::namedWindow与cv::imshow):

1.namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁;

2.常见用法namedWindow("Window Title",WINDOW_AUTOSIZE)

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

2)WINDOW_NORMAL和QT集成的时候会使用,允许修改窗口大小;

3)imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象。
四、保存图像(cv::imwrite):

1.保存图像文件到指定目录路径;

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

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

4.可以指定压缩参数。
五、代码:

1.将图片作为灰度图片加载:

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

using namespace cv;
int main(int argc, char** argv) {
	Mat src = imread("F:/laboratory/OpenCV/pictures/learning/test.jpg",IMREAD_GRAYSCALE);//imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型
						                                     //IMEREAD_GRAYSCALE(0)表示作为灰度图像加载
	if (src.empty()) {
		printf("Couldn't load image...\n");
		return -1;
	}

	namedWindow("OpenCV setup demo", CV_WINDOW_AUTOSIZE);//namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁
														 //WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
	imshow("OpenCV setuo demo", src);//imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象

	waitKey(0);
	return 0;
}

        2.色彩空间转换:

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

using namespace cv;
int main(int argc, char** argv) {
	Mat src = imread("F:/laboratory/OpenCV/pictures/learning/test.jpg");//imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型
						                        	//IMEREAD_GRAYSCALE(0)表示作为灰度图像加载
	if (src.empty()) {
		printf("Couldn't load image...\n");
		return -1;
	}

	namedWindow("OpenCV setup demo", CV_WINDOW_AUTOSIZE);//namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁
							//WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
	imshow("OpenCV setuo demo", src);//imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象

	Mat output_image;
	cvtColor(src, output_image, CV_BGR2GRAY);//cv::cvtColor改变颜色空间,从一个颜色空间改变为另一个颜色空间
        namedWindow("output window", CV_WINDOW_AUTOSIZE);
	imshow("output windows", output_image);

	waitKey(0);//在接收到键盘上的信号后才关闭窗口
	return 0;
}

        3.保存图像:

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

using namespace cv;
int main(int argc, char** argv) {
	Mat src = imread("F:/laboratory/OpenCV/pictures/learning/test.jpg");//imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型
									//IMEREAD_GRAYSCALE(0)表示作为灰度图像加载
	if (src.empty()) {
		printf("Couldn't load image...\n");
		return -1;
	}
	namedWindow("OpenCV setup demo", CV_WINDOW_AUTOSIZE);//namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁
							//WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
	imshow("OpenCV setuo demo", src);//imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象

	namedWindow("output window", CV_WINDOW_AUTOSIZE);
	Mat output_image;
	cvtColor(src, output_image, CV_BGR2GRAY);//cv::cvtColor改变颜色空间,从一个颜色空间改变为另一个颜色空间
	imshow("output windows", output_image);

	imwrite("F:/laboratory/OpenCV/pictures/learning/test_save.jpg",output_image);//imwrite功能是保存图片在指定路径,第一个参数是路径和文件名,第二个参数是所保存图片的对象名
	waitKey(0);//在接收到键盘上的信号后才关闭窗口
	return 0;
}

猜你喜欢

转载自blog.csdn.net/leila_W/article/details/85465697
今日推荐