前言
在上一章中以及描述了如何使用cv :: imread加载图像并通过cv :: imshow 将其显示在窗口中。点击进入加载和显示图像
目标
本章中,将学习如何:
- 加载图像(使用cv::imread)
- 使用cv :: cvtColor将图像从BGR转换为灰度格式
- 将转换的图像保存在磁盘上(使用cv :: imwrite)
源代码
#include <opencv2/opencv.hpp>
using namespace cv;
int main( int argc, char** argv )
{
char* imageName = argv[1];
Mat image;
image = imread( imageName, IMREAD_COLOR );
if( argc != 2 || !image.data )
{
printf( " No image data \n " );
return -1;
}
Mat gray_image;
cvtColor( image, gray_image, COLOR_BGR2GRAY );
imwrite( "../images/Gray_Image.jpg", gray_image );
namedWindow( imageName, WINDOW_AUTOSIZE );
namedWindow( "Gray image", WINDOW_AUTOSIZE );
imshow( imageName, image );
imshow( "Gray image", gray_image );
waitKey(0);
return 0;
}
说明
- 使用cv :: imread加载imageName路径的图像。假设加载BGR图像
- 使用cv :: cvtColor将图像从BGR转换成灰度格式。
cvtColor( image, gray_image, COLOR_BGR2GRAY );
源图像(image)
目标图像(gray_image)
附加参数(COLOR_BGR2GRAY )指定转换方式。
- 通过使用cv :: imwrite将新的gray_image图像保存到磁盘上(否则在程序结束后丢失)
imwrite( "../images/Gray_Image.jpg", gray_image );
- 最后,创建两个窗口并使用它们来显示原始图像以及目标图像
namedWindow( imageName, WINDOW_AUTOSIZE );
namedWindow( "Gray image", WINDOW_AUTOSIZE );
imshow( imageName, image );
imshow( "Gray image", gray_image );
结果
编译代码,然后运行可执行文件,将图像路径作为参数。如果你在Windows上,可执行文件当然也会包含一个exe扩展名。需要确保图像文件路径正确。
网友评论