图像大小转换-转载

来源:互联网 发布:购买域名怎么使用 编辑:程序博客网 时间:2024/06/05 18:39
//此文为转载,原文地址为 点击打开链接

[cpp] view plain copy
  1. <span style="font-size:18px;">#include <string>  
  2. #include <iostream>  
  3. #include "opencv2\opencv.hpp"  
  4. using namespace cv;  
  5. using namespace std;  
  6.   
  7. int main(void){  
  8.   
  9.     const string imageName("2.jpg");  
  10.     Mat image = imread(imageName);  //读取图像  
  11.     imshow("image", image);      //显示原图像  
  12.     cout << imageName << "'s width is"  
  13.         << image.size().width << endl;  
  14.     cout << imageName << "'s height is"  
  15.         << image.size().height << endl;  
  16.     cout << image.depth() << endl;  
  17.     Mat newimage;  
  18.     resize(image,newimage,Size(500,375)); //图像大小转换  
  19.       
  20.     imshow("newimage", newimage);  //显示变换大小后的图像  
  21.     waitKey(0);  
  22.     imwrite("000005.jpg", newimage); //保存图片  
  23.     waitKey(0);  
  24. }</span>  

函数参数解释:

 void resizeInputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
  

src:原图像;

dst:转换后的图像;

dsize:转换后图像的大小,其为Size类型,一般可以写成Size(width,height),如程序中的Size(500,375);

fx:沿x轴的比例因子。如果为0,那么计算方式为(double)dsize.width/src.cols

fy:沿y轴的比例因子。如果为0,那么计算方式为(double)dsize.height/src.rows,一般这两个值都去默认的0;

interpolation:插值方法,即大小转换的方法,其值为以下几种(默认为双线性插值):

               INTER_NEAREST:最近领域插值方法;

             INTER_LINEAR:双线性插值方法;
             
             INTER_AREA:利用区域信息的插值方法;
             INTER_CUBIC:双立方插值方法;
             INTER_LANCZOS4:兰索斯插值方法;


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

filename:文件保存的名称;
img:        要保存的图片;
params;   特定格式保存参数编码:
                对于JPG格式(CV_IMWRITE_JPEG_QUALITY )其取值为0到100,越高越好,默认为95;
         对于PNG格式(CV_IMWRITE_PNG_COMPRESSION)其值为0-9代表压缩程度,参数越大,压缩之后的空间越小,压缩的时间也会越多;
         对于PPM,PGM,PBM格式(CV_IMWRITE_PXM_BINARY )的文件,其值为0-1,代表二值化的标志位,默认为1; 
0 0
原创粉丝点击