代码如下:
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;
}
|
首先:
其次,将RGB图像转化为灰度格式。Opencv中有现成的转化函数:
cvtColor( image, gray_image, CV_BGR2GRAY );
cvtColor 的参数为:
然后,使用函数 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) 函数,用于等待用户的按键操作来关闭窗口。
imagerabit@OpenCV中文网站 <wangyongpan.wang [at] gmail.com>