OpenCv001-图像的读取和显示

以下知识基本都摘抄自网络,再加上自己的一些问题,记录下来,被日后查用。

# include <opencv.hpp>
using namespace cv;
using namespace std;
int main()
{   //声明一个表示图像的变量,变量的类型是CV::Mat 类型  虽然目前为止 我还不知道 这个Mat到底是何方神圣
	//这这样就声明了一个图像变量 image  其宽度和高度都是0 
	Mat image;
	//调用CV::Mat的size()函数可以获取image的尺寸
	cout << "szie:" << image.size().height 
		 << '\t' << image.size().width << endl;
    //采用imread()函数读取一张图片使其成为Mat对象,其中 函数的第一个参数表示图像文件的名称
	//后面有一个参数很重要,打开函数一路查看源代码定义 可以查看后面参数传递值的时候 这个函数返回的是啥样的东西  虽然目前对通道 深度这些定义还不太明白
	image = imread("C:\\Users\\Administrator\\Pictures\\护眼模式_20190815095139.jpg", IMREAD_COLOR);
	cout << "image_size:" << image.size().height
		<< "\t" << image.size().width << endl;
	//检测图像是否读取成功  此处的成员变量data事实上是指向已经分配的内存块指针,包括图像数据,当数据不存在时,它被简单设置为0
	if(image.data == NULL)
	{
		printf("图像读取失败");
	}
	//namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。   常见用法namedWindow("Window Title", WINDOW_AUTOSIZE)
	//WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
    //WINDOW_NORMAL, 跟QT集成的时候会使用,允许修改窗口大小。
	//imshow根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat对象
	namedWindow("Original Image");
	imshow("Original Image",image);

	//话说 flip函数可以进行图像的翻转,可以在原地进行翻转,即不需要创建新的图像,但是试了一下并不可以啊 ,这是what?  
	//所谓的翻转 就是试图像关于X轴对称或者关于Y轴对称或者关于原点对称
	Mat result, gray_image;
	flip(image,result,1);
	namedWindow("Output Image");
	imshow("Output Image", image);

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

	cvtColor(image, gray_image, COLOR_BGR2GRAY);


	//图像的保存  保存时后缀名即为保存的格式
	imwrite("output.bmp", result);
	waitKey(0);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值