读取、修改、保存图像

注意: 我们假设读者已经了解图像读取函数 imread ,并能使用 imshow 将图像显示到窗口。

目标

如下,将学习如何使用:

图像读取 imread
图像颜色空间的转换 cvtColor
图像保存至硬盘 (using imwrite)

代码

代码如下:

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

using namespace cv;

int main( int argc, char** argv )
{
 if(argc != 2)
 {
   printf("useage: %s <imagefile>\n ", argv[0]);
   return -1;
 }
 char* imageName = argv[1];

 Mat image;
 image = imread( imageName, CV_LOAD_IMAGE_COLOR);

 if( !image.data )
 {
   printf( " No image data \n " );
   return -1;
 }

 Mat gray_image;
 cvtColor( image, gray_image, CV_BGR2GRAY );
 
 imwrite( "../../images/Gray_Image.jpg", gray_image );

 namedWindow( imageName, CV_WINDOW_AUTOSIZE );
 namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );

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

 waitKey(0);

 return 0;
}

注解

1.首先:
创建Mat,用于保存图像内容。
使用 imread 读取图像,图像路径为 imageName ,图像按BGR格式读取。
2.其次,将RGB图像转化为灰度格式。Opencv中有现成的转化函数:

cvtColor( image, gray_image, CV_BGR2GRAY );

cvtColor 的参数为:
源图像 (image) 。
目标图像 (gray_image),用于保存转换图像。
附加参数,用于指定转换的类型,例子中使用参数 CV_BGR2GRAY 。参数的具体定义请参见cvColor函数
的 API文档。
3.然后,使用函数 imwrite 将得到的灰度图像 gray_image 保存到硬盘。程序结束时,该灰度图像将会被释
放。

imwrite( "../../images/Gray_Image.jpg", gray_image );

该函数,将图像写入到指定的文件夹下,程序执行时需保证该文件夹存在。示例中,将得到的灰度图像写到…/…/images/下,命名为Gray_Image.jpg。

4.最后,为了检验图像是否正确,将原始图像和灰度图像分别显示到打开的窗口中:

namedWindow( imageName, CV_WINDOW_AUTOSIZE );
namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );

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

5.结尾的 waitKey(0) 函数,用于等待用户的按键操作来关闭窗口。

结语

程序运行后,将得到:
在这里插入图片描述
检查你的输出文件夹,将发现一个新的.jpg文件。文件名为 Gray_Image.jpg :

在这里插入图片描述
恭喜你,到这儿你已经完成了整个程序!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值