opencv 2.x学习笔记(二)修改和保存图像

        在上一篇中,我们了解了如何简单的读取和显示图像。那么现在,我们将通过简单的cvtColor函数来讨论如何利用opencv 2.x来修改和保存图像。首先,我们来了解一下cvtColor函数。

cvtColor

功能:把一个图像从一个颜色空间转换到另一个。

原型:void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)

参数:src:输入图像,8比特无符号,16比特无符号,或者单精度浮点数。

drc:输出图像,和输入图像有相同的大小和深度。

code:颜色空间转换标识。常用的如下:

RGB<--->GRAY(CV_BGR2GRAY, CV_RGB2GRAY, CV_GRAY2BGR, CV_GRAY2RGB)

RGB<--->HSV(CV_BGR2HSV, CV_RGB2HSV, CV_HSV2BGR, CV_HSV2RGB)

等等。

注:在opencv默认的颜色格式中,通常是BGR,而不是RGB。所以在标准的彩色图像中,第一个字节是蓝色成分,第二个字节是绿色成分,第三个字节是红色成分。

dstCn:输出图像的的通道数,默认为0,表示,通道数根据src和code自动获得。

源代码

        简单了解了cvtColor函数之后,我们来看一下下面的代码。

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
	if(argc != 2)
	{
		cout << "Useage: dispay_image ImageToLoadAndDisplay" << endl;
		return -1;
	}
	Mat image;
	image = imread(argv[1], CV_LOAD_IMAGE_COLOR);

	if(!image.data)
	{
		cout << "Could not open or find the image" << endl;
		return -1;
	}
	Mat gray_image;
	cvtColor(image, gray_image, CV_BGR2GRAY);

	imwrite("E:/TestPic/Gray_Image.jpg", gray_image);
	
	namedWindow("src image", CV_WINDOW_AUTOSIZE);
	namedWindow("Gray image", CV_WINDOW_AUTOSIZE);

	imshow("src image", image);
	imshow("Gray image", gray_image);

	waitKey(0);
	return 0;
}

分析

        在这个程序中,我们首先创建了一个Mat对象image,并利用imread函数读取了图像,之后,我们使用上面介绍的cvtColor函数将RGB图像转化成为灰度格式,并使用gray_image来保存转换后的图像。然后,我们使用函数imwrite将gray_image保存到硬盘,在程序结束之后,这个灰度图像将会被释放。

        在这里,我们简单的传入图像的保存位置,以及要保存的图像就可以了。不过需要注意的是,opencv中该函数并不是所有的Mat类型以及所有的图像格式都支持。最后我们定义了两个窗口,并把原图像和转换后的图像都显示出来。


结果

           

在定义的文件目录下可以看到转换后的图像被写入到磁盘中:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值