您的位置:首页 > 运维架构

读取、修改、保存图像---opencv

2013-09-02 19:20 330 查看


目标

如下,将学习如何使用:

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


代码

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39


#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;
}



注解

首先:
创建Mat,用于保存图像内容。
使用 imread 读取图像,图像路径为 imageName ,图像按BGR格式读取。

其次,将RGB图像转化为灰度格式。Opencv中有现成的转化函数:

cvtColor( image, gray_image, CV_BGR2GRAY );


cvtColor 的参数为:

源图像 (image) 。
目标图像 (gray_image),用于保存转换图像。
附加参数,用于指定转换的类型,例子中使用参数 CV_BGR2GRAY 。参数的具体定义请参见cvColor函数的API文档。

然后,使用函数 imwrite 将得到的灰度图像 gray_image 保存到硬盘。程序结束时,该灰度图像将会被释放。

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


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

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

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

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


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


结语

程序运行后,将得到:



检查你的输出文件夹,将发现一个新的.jpg文件。文件名为 Gray_Image.jpg :



恭喜你,到这儿你已经完成了整个程序!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: