【OpenCV学习笔记】一、装载、 显示和存储图像及在图像上绘图

最近在系统地学习OpenCV,将学习的过程在此做一个记录,主要以代码+注释的方式记录学习过程。

1.装载、 显示和存储图像及在图像上绘图

#include 
#include 
#include 
using namespace std;

int main()
{
	cv::Mat image; //创建一个空对象
	//这个定义创建了一个尺寸为0×0的图像。 可以访问cv::Mat的size属性来验证这一点
	cout << "This image is " << image.rows << "*"
		<< image.cols << endl;
	image = cv::imread("C:\\Users\\Administrator\\Desktop\\lena.jpg");// 读取输入图像
	if (image.empty())  // 错误处理.如果没有分配图像数据,empty方法返回true。
	{
		cout << "ERROR!" << endl;
	}
	cv::namedWindow("Original Image");// 定义窗口( 可选)
	//可以看到, 这个窗口是用名称来标识的。 我们稍后可以重用这个窗口
	//来显示其他图像, 也可以用不同的名称创建多个窗口。
	cv::imshow("Original Image", image) ;
	//因为它是控制台窗口, 会在main函数结束时关闭, 所以我们增加一
	//个额外的highgui函数, 需要用户键入数值才能结束程序:
	cv::waitKey(0);//0表示永远地等待按键;正数表示等待指定的毫秒数
	cv::Mat result; //创建另一个空的图像
	cv::flip(image, result, 1);// 正数表示水平;0表示垂直;负数表示水平和垂直
	cv::namedWindow("Output Image");
	cv::imshow("Output Image", result);
	cv::waitKey(0);
	cv::imwrite("C:\\Users\\Administrator\\Desktop\\lenaFlip.jpg",result);//保存结果
	// 读入一个图像文件并转换为灰度图像
	cv::Mat image_gray = cv::imread("C:\\Users\\Administrator\\Desktop\\lena.jpg",CV_LOAD_IMAGE_GRAYSCALE);
	// 读取图像, 并转换为三通道彩色图像
	cv::Mat image_color = cv::imread("C:\\Users\\Administrator\\Desktop\\lena.jpg", CV_LOAD_IMAGE_COLOR);
	cout << "image_gray has " << image_gray.channels() << " channels." << endl;
	cout << "image_color has " << image_color.channels() << " channels." << endl;
	
	/*OpenCV还提供了几个用于在图像上绘制形状和写入文本的函数。 基
	本的形状绘制函数有circle、 ellipse、 line、 rectangle。 这
	是一个使用circle函数的例子:*/
	cv::circle(image_gray,// 目标图像
		cv::Point(300, 300), // 中心点坐标
		100, // 半径
		0, // 颜色( 这里用黑色)
		3); // 厚度
	cv::putText(image_gray, // 目标图像
		"She is Lena.", // 文本
		cv::Point(200, 450), // 文本位置
		cv::FONT_HERSHEY_PLAIN, // 字体类型
		2.0, // 字体大小
		255, // 字体颜色( 这里用白色)
		2); // 文本厚度
	cv::namedWindow("Drawing on an Image");
	cv::imshow("Drawing on an Image", image_gray);
	cv::waitKey(0);
	return 0;
}

运行结果:

【OpenCV学习笔记】一、装载、 显示和存储图像及在图像上绘图_第1张图片

【OpenCV学习笔记】一、装载、 显示和存储图像及在图像上绘图_第2张图片

你可能感兴趣的:(OpenCV学习笔记,opencv)