3. OpenCV 4.2.0 加载、修改、保存图像(OpenCV 官方文档翻译)

官方文档链接:https://docs.opencv.org/4.2.0/db/d64/tutorial_load_save_image.html


Note
We assume that by now you know how to load an image using cv::imread and to display it in a window (using cv::imshow ). Read the Load and Display an Image tutorial otherwise.

通过之前的学习,已经学会了使用 cv::imread 加载图像以及使用 cv::imshow 在窗口中显示图像。


目标 (Goals)

In this tutorial you will learn how to:

  • Load an image using cv::imread

  • Transform an image from BGR to Grayscale format by using cv::cvtColor

  • Save your transformed image in a file on disk (using cv::imwrite )

  • 使用 cv::imread 加载图像

  • 使用 cv::cvtColor 将图片格式从 BGR 转换为灰度图像

  • 使用 cv::imwrite 保存图像


代码 (Code)

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

解释 (Explanation)

  1. 首先先使用 cv::imread 加载图像,具体图像保存了文件名的 imageName 指定,本次加载的是 BGR 图像。

注意
在 VS 中指定 main 函数的传入参数需要在项目属性中设置,具体做法见此处。

  1. 下面将加载进来的 BGR 图像转换为灰度图像。OpenCV 定义了一个可以提供直接转换的函数:
cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);

如上所示,cv::cvtColor 需要如下参数:

  • 源图像 (image)
  • 目标图像 (gray_image),即用于存储转换后的图像的 Mat 变量
  • 第三个参数用于指定转换类型。在这里使用的是 cv::COLOR_BGR2GRAY,因为对于彩色图像,使用 cv::imread 有 BGR 默认的通道顺序
  1. 转换后的灰度图像会在程序运行结束后被内存释放,可以通过函数 cv::imwrite 将图像文件保存起来。
cv::imwrite("../../images/Gray_Image.jpg", gray_image);

此语句将把灰度图像以名为 “gray_image.jpg” 的文件保存在当前位置的上上级文件夹 “images” 中。

  1. 然后,通过创建两个窗口来输出文件:
namedWindow( imageName, WINDOW_AUTOSIZE );
namedWindow( "Gray image", WINDOW_AUTOSIZE );
imshow( imageName, image );
imshow( "Gray image", gray_image );
  1. 最后,调用 cv::waitKey(0) 函数是程序永远等待用户按键。

结果 (Result)

运行程序后会得到如下图像结果:
在这里插入图片描述

打开文件夹,会看到生成了一个名为 “Gray_Image.jpg” 的新图像文件。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值