codecamp

OpenCV 图像加载,修改和保存

注意
我们假设现在你知道如何使用cv :: imread加载图像并将其显示在窗口中(使用cv :: imshow)。阅读加载和显示图像教程否则。

目标

在本教程中,您将学习如何:

代码

这里是:

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

说明

  • 我们首先使用位于由imageName给出的路径中的cv :: imread加载图像。对于这个例子,假设你正在加载BGR图像。
  • 现在我们将把我们的图像从BGR转换成灰度格式。OpenCV有一个非常好的功能来做这种转换:
    cvtColor( image, gray_image, COLOR_BGR2GRAY );

      你可以看到,cv :: cvtColor作为参数:

源图像(图像)
目标图像(gray_image),我们将保存转换的图像。
一个附加参数,指示将执行什么样的转换。在这种情况下,我们使用COLOR_BGR2GRAY(因为cv :: imread在彩色图像的情况下具有BGR默认通道顺序)。
  • 所以现在我们有我们的新的gray_image,并希望将其保存在磁盘上(否则在程序结束后会丢失)。为了保存它,我们将使用一个函数来解析cv :: imreadcv :: imwrite
  • imwrite(“../../images/Gray_Image.jpg”,gray_image);

      这将节省我们的gray_imageGray_Image.jpg在文件夹图像位于两个级别我的当前位置。

  • 最后,我们来看看图片。我们创建两个窗口并使用它们来显示原始图像以及新的图像:

namedWindow( imageName, WINDOW_AUTOSIZE );
namedWindow( "Gray image", WINDOW_AUTOSIZE );
imshow( imageName, image );
imshow( "Gray image", gray_image );
  • 程序的waitKey(0)函数调用添加到用户密钥按下后永远等待。

结果

当你运行你的程序你应该得到这样的东西:

OpenCV 图像加载,修改和保存

如果你检查你的文件夹(在我的情况下图像),你应该有一个名为Gray_Image.jpg的新的.jpg文件:

OpenCV 图像加载,修改和保存

恭喜,您完成了本教程!

OpenCV 图像加载和显示
使用OpenCV与biicode dependency manager
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OpenCV教程

OpenCV高级GUI和媒体(highgui模块)

OpenCV图像输入和输出(imgcodecs模块)

对象检测(objdetect模块)

计算摄影(照片模块)

图像拼接(拼接模块)

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }