精华内容
下载资源
问答
  • 在看到Opencv3编程入门的图像输入、显示和输出部分时,在imwrite函数应用时碰到程序理解困难的问题。通过查阅资料汇总理解。 void createAlphaMat(Mat &mat) { for(int i = 0; i < mat.rows; ++i) {...

    在看到Opencv3编程入门的图像输入、显示和输出部分时,在imwrite函数应用时碰到程序理解困难的问题。通过查阅资料汇总理解。

     

    void createAlphaMat(Mat &mat)
    {
     for(int i = 0; i < mat.rows; ++i) {                                                                      
      for(int j = 0; j < mat.cols; ++j) {                                                                                                                          
       Vec4b&rgba = mat.at<Vec4b>(i, j);
       rgba[0]= UCHAR_MAX;
       rgba[1]= saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) *UCHAR_MAX);
       rgba[2]= saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) *UCHAR_MAX);
       rgba[3]= saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
      }
     }
    }

    rows 表示:行                    cols  表示:列   

    Vec4b&rgba = mat.at<Vec4b>(i, j);  :

    mat.at(i,j),从mat中取出一个像素,像素的类型是Vec4b,该类型含义是,有4个UCHAR类型的元素,

    其中rgba[0]、rgba[1]、rgab[2]代表像素的三原色,BGR,即为蓝色(Blue)、Green(绿色)、红色(Red)。

    rgba[3]代表像素的的Alpha值,表示像素的透明度。 其中:.at 表示Mat accessing pixels(at) 读取一针像素

      saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) *UCHAR_MAX); :

     

    //-----------------------------------【ShowHelpText( )函数】----------------------------------
    //          描述:输出一些帮助信息
    //----------------------------------------------------------------------------------------------
    void ShowHelpText()
    {
     //输出欢迎信息和OpenCV版本
     printf("\n\n\t\t\t非常感谢购买《OpenCV3编程入门》一书!\n");
     printf("\n\n\t\t\t此为本书OpenCV3版的第15个配套示例程序\n");
     printf("\n\n\t\t\t   当前使用的OpenCV版本为:" CV_VERSION );
     printf("\n\n  ----------------------------------------------------------------------------\n");
    }

    int main( )
    {
     //创建带alpha通道的Mat
     Mat mat(480, 640, CV_8UC4);
     createAlphaMat(mat);

     ShowHelpText();

     vector<int>compression_params;
     //此句代码的OpenCV2版为:
     //compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
     //此句代码的OpenCV3版为:
     compression_params.push_back(IMWRITE_PNG_COMPRESSION);
     compression_params.push_back(9);

     //显示图片
     try{
      imwrite("透明Alpha值图.png", mat, compression_params);
      imshow("生成的png图",mat);
      fprintf(stdout,"PNG图片文件的alpha数据保存完毕~\n可以在工程目录下查看由imwrite函数生成的图片\n");
      waitKey(0);
     }
     catch(runtime_error& ex) {
      fprintf(stderr,"图像转换成PNG格式发生错误:%s\n", ex.what());
      return 1;
     }

     return 0;
    }

    展开全文
  • 参考资料: ... 你可能觉得imread函数很简单,但是还是有一些细节要注意。比如我就对imwrite函数输出的图片格式有一些疑问,下面对imwrite函数用法进行解释,先放一下官方文档: imwrite(A,filename)wr...

      参考资料:

      https://www.mathworks.com/help/matlab/ref/imwrite.html?s_tid=srchtitle

      你可能觉得imread函数很简单,但是还是有一些细节要注意。比如我就对imwrite函数输出的图片格式有一些疑问,下面对imwrite函数的用法进行解释,先放一下官方文档:


     

    imwrite(A,filename) writes image data A to the file specified by filename, inferring the file format from the extension. imwrite creates the new file in your current folder. The bit depth of the output image depends on the data type of A and the file format. For most formats:

    • If A is of data type uint8, then imwrite outputs 8-bit values.

    • If A is of data type uint16 and the output file format supports 16-bit data (JPEG, PNG, and TIFF), then imwrite outputs 16-bit values. If the output file format does not support 16-bit data, then imwrite returns an error.

    • If A is a grayscale or RGB color image of data type double or single, then imwrite assumes that the dynamic range is [0,1] and automatically scales the data by 255 before writing it to the file as 8-bit values. If the data in A is single, convert A to double before writing to a GIF or TIFF file.

    • If A is of data type logical, then imwrite assumes that the data is a binary image and writes it to the file with a bit depth of 1, if the format allows it. BMP, PNG, or TIFF formats accept binary images as input arrays.

    If A contains indexed image data, you should additionally specify the map input argument.


     

      imwrite的用法本身也很简单,A是一个图像矩阵,从上述说明中可以看出,A的数据类型可以是uint8,uint16,logical等,还可以是indexed image data即索引图。filename是一个字符串,将输出图像的路径和文件名传给filename即可。更进一步从描述中可看出,输出图片文件的格式由后缀名(extension)决定,uint8基本都支持,uint16则仅有部分图片格式支持。此时我们就要specific文件名的后缀,防止出现error。

      看文档又好奇这个indexed image即索引图是什么,在网上找了一张图:

      简单来说就是给一幅图像出现的所有RGB值编一个映射表,然后有一个和图像形状一样的索引矩阵,查表即可得到RGB图。 

    展开全文
  • opencv之imwrite函数使用

    千次阅读 2017-02-14 21:13:59
    转载自:...  首先来看看imwrite()函数的具体用法。  bool imwrite(const string& filename, InputArray img, const vector& params=vector() )  该函数是把

    转载自:http://www.cnblogs.com/tornadomeet/archive/2012/12/26/2834336.html

    http://blog.csdn.net/wangyaninglm/article/details/41685607

     首先来看看imwrite()函数的具体用法。

      bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )

      该函数是把程序中的Mat类型的矩阵保存为图像到指定位置。

      参数filename为所需保存图像的文件目录和文件名。这里的文件名需要带有图像格式后缀的,目前OpenCV该函数只支持JPEG,PNG,PPM,PGM,PBM,TIFF等。并不是所有Mat类型都支持。

      img参数为图像数据来源,其类型为Mat。注意也不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_16U)。所以其他一些数据类型是不支持的,比如说float型等。如果Mat类型数据的深度和通道数不满足上面的要求,则需要使用convertTo()函数和cvtColor()函数来进行转换。convertTo()函数负责转换数据类型不同的Mat,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。而cvtColor()函数是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数(只是我们一般没有用到它,一般情况下这个函数是用来进行色彩空间转换的)。另外也可以不用imwrite()函数来存图片数据,可以直接用通用的XML IO接口函数将数据存在XML或者YXML中。

      参数params是用来设置对应图片格式的参数的,因为一般情况下这些图片格式都是经过了压缩的,这里就是设置这些压缩参数来控制图片的质量。该参数是一个vector<int>类型,里面分别存入paramId_1, paramValue_1, paramId_2, paramValue_2, ... 也就是说存入一对属性值。如果不设置该参数的话,则程序会自动根据所保存的图像格式采用一个默认的参数。

    convertTo()函数负责转换数据类型不同的Mat,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。而cvtColor()函数是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数(只是我们一般没有用到它,一般情况下这个函数是用来进行色彩空间转换的)。

    展开全文
  • imwrite()函数用法简要介绍

    千次阅读 2017-09-08 17:33:41
    bool imwrite(const string &filename,InputArray img,const vector¶ms=vector()) 第一个参数:filename,顾名思义就是所需保存图像的文件目录和文件名(需要带想保存的图片格式)(就是保存在什么地方叫什么名字...

    bool imwrite(const string &filename,InputArray img,const vector&params=vector())
    第一个参数:filename,顾名思义就是所需保存图像的文件目录和文件名(需要带想保存的图片格式)(就是保存在什么地方叫什么名字)。
    第二参数:img就是要保存的原图片,类型一般为Mat型的单通道和三通道,并且要求深度为8位或者16位的无符号数。
    第三个参数:一个数组,用来设置参数来控制图像的质量。有默认值,如果不设置该参数,程序会自动根据所保存的图像格式采用一个默认的参数值。所以一般我们不用去管他。

    `

    展开全文
  • 前言  OpenCV中保存图片的函数在c++版本中变成了imwrite(),这应该是向matlab中图像处理的的一些函数风格靠近吧。保存图片这个功能还是...本文就简单介绍下OpenCV中imwrite()函数用法。不过个人感觉这个函数功能
  • Matlab中imwrite( ) 函数 保存图像用法

    万次阅读 多人点赞 2018-03-23 13:54:29
    1、保存到当前文件夹下:imwrite(I,'abc.png'); 2、保存到当前文件夹下的一个子文件result下:imwrite(I,'./result/abc.png'); 3、保存到当前文件夹上一层的一个文件夹result下:imwrite(I,'../result/abc.png...
  • imwrite()函数

    千次阅读 2015-08-27 16:26:36
    imwrite()函数的具体用法。  bool imwrite(const string& filename, InputArray img, const vector& params=vector() )  该函数是把程序中的Mat类型的矩阵保存为图像到指定位置。 opencv代码: #...
  • 第一步,功能说明:该函数的功能就是把新生成的图片,存入本地文件夹里面。 第二步,结果图显示:  效果显示: 文件夹下已经保存成功图片:   第三步,API详解:原型:bool imwrite( const string&...
  • 几个MATLAB函数用法

    2017-01-09 15:16:12
    text函数用法 text函数用来在图像上标记相应的点 用法:text(列坐标,行坐标)根据变量命名并保存图像 i=1; newname = strcat('',num2str(i),'.tif'); imwrite(I,newname,'tif');
  • 上一篇介绍了OpenCV环境搭建,具体地址在这里,OpenCV环境搭建(一),这一篇打算介绍下那个测试程序里面几个函数的使用,只用当我们知道函数具体用法,才能方便后续的学习。 先来放张本篇文章的测试图片 ...
  • OpenCV常用的基本函数

    2018-04-07 00:49:05
    一、opencv基本函数 opencv中常用的基本函数有 ...二、常用基本函数用法 rectangle函数用法函数原型: CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2, ...
  • 作gif动画要用到getframe、frame2im、rgb2ind和imwrite函数,getframe函数用来抓取当前图形窗口中的图像,frame2im函数和rgb2ind函数用来将抓取的图像转为索引图像,imwrite函数用来将索引图像写入gif格式动画...
  • MATLAB常见函数

    2016-12-07 09:40:13
    设图像矩阵为A。。 1、读取图像 imread 2、显示图像 imshow(A,[]) 3、保存图像 imwrite ○ 作用:imwrite Write... ○ 用法imwrite(A,FILENAME,FMT) writes the image A to the file specified by FILENAME in
  • Scalar用法

    2020-11-09 11:34:53
    cv::Scalar的构造函数是cv::Scalar(v1, v2, v3, v4),前面的三个参数是依次设置BGR的,和RGB相反,第四个参数设置图片的透明度。 2 使用cv::Scalar的规则 当使用opencv提供的库函数imread()、imwrite()和imshow()...
  • matlab roundn()函数

    2020-06-11 21:01:18
    roundn函数是四舍五入函数用法很简单,这里直接给出详细样例: 需要被四舍五入的数是123.45,正负号代表是小数点的右边还是左边到第几位 用matlab代码转换图片的,只需要几行代码。 path = 'path/to/...
  • python scipy.misc.imsave()函数

    千次阅读 2020-03-12 15:32:53
    这个函数用于储存图片,将数组保存为图像。 此功能仅在安装了Python Imaging Library(PIL)时可用。版本也比较老了,新的替代它的是imageio.imwrite() 用法: imsave(*args, **kwds) 参数: name : 文件名或者...
  • 设图像矩阵为A。。 1、读取图像 2、显示图像 imshow(A,[]) 3、保存图像 imwrite ○ 作用:imwrite Write... ○ 用法imwrite(A,FILENAME,FMT) writes the image A to the file specified by FILENAME in the for
  • 4-下面仅给出函数的大概意思,详细用法见: help 函数名 或 matlab help   1、imread:read image from graphics file; 2、imshow:display image in Handle Graphics figure; 3、imwrite:write image to ...
  • 一. 读写图像文件 1. imreadimread函数用于读入各种图像文件,如:a=imread('e:/w01.tif')注:计算机E盘上要有w01相应的.tif文件。2. imwriteimwrite函数用于写入图像文件,如:imwrite(a,'e:/w02.tif',’tif...
  • opencv imencode跟imdecode函数jpg(python)

    千次阅读 2018-07-06 14:21:07
    经典用法 _, img_encode = cv2.imencode('.jpg', img, img_param) img是一张图片文件(在opencv中就是一个numpy的多维矩阵而已) img_param是压缩参数。这个是我们自己设置的。 img_param = [int(cv2.IMWRITE_...
  • 关于matlab图像保存的问题

    千次阅读 2015-01-19 17:11:07
    今天我来总结下自己用过的几种matlab保存图像的方法,希望给有需要的人一些帮助,也为自己理理思路。 1.手动存储 Figure->File->save As...选择存储的位置、存储名称、存储类型 ...imwrite函数的简单用法可以help im
  • openCV3.4中文教程(1)之图片操作

    千次阅读 2018-03-11 13:20:10
    本教程为openCV3.4的python3.6教程中Gui Features in OpenCV下的Getting ...imread()、imshow()、imwrite()函数用法。 matplotlib函数用法。 读取图片 img = cv2.imread(‘sample.jpg’,1) 1代表:...
  • Opencv 学习笔记(二)

    2020-10-19 10:06:38
    第二篇:介绍具体函数用法 图片读取、保存 namedWindow():使用该函数创建一个空图片的窗口时,需要手动释放窗口资源(不推荐这种用法) // imread() Mat pic = imread("图片路径", 读取方式_可缺省); // 默认...
  • 15 用imwrite函数生成png透明图 3.1.8 16 综合示例程序:图像的载入、显示与输出 3.1.9 17 为程序界面添加滑动条 3.2.1 18 鼠标操作示例 3.3 19 基础图像容器Mat类的使用 4.1.7 20 用OpenCV进行基本绘图 4.3 21 操作...
  • 15 用imwrite函数生成png透明图 3.1.8 16 综合示例程序:图像的载入、显示与输出 3.1.9 17 为程序界面添加滑动条 3.2.1 18 鼠标操作示例 3.3 第二部分 初探core组件 19 基础图像容器Mat类的使用 4.1.7 20 用...
  • VideoReader和strcat和read和imwrite 1.VideoReader 是读入视频函数。用来读入视频。具体用法如下代码所示,具体参数如下图所示: fileName = 'video11.mp4'; obj = VideoReader(fileName); 2.strcat 字符串连接...
  • opencv实现图像的JPEG质量等级压缩

    千次阅读 2018-12-14 09:49:59
    强调一下:主要是用到了cv::imencode和cv::imdecode两个函数,具体的用法与cv::imread和cv::imwrite类似。 可参考opencv的相应API文档帮助理解:Image file reading and writing #include &amp;lt;opencv2/core...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

imwrite函数用法