利用OpenCV保存图片,提高压缩质量

1.第一种方法        

        用OpenCV中的函数cvSaveImage(filename,img)来保存图像,很少注意到它还有第三个参数。第三个参数就是用来调整JPG图像压缩质量的,它是一个含有3个元素的数组,具体使用方法如下:

#define CV_IMWRITE_JPEG_QUALITY 1
#define CV_IMWRITE_PNG_COMPRESSION 16
#define CV_IMWRITE_PXM_BINARY 32

  /* save image to file */
  CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, const int* params CV_DEFAULT(0) );

  int p[3];
  p[0] = CV_IMWRITE_JPEG_QUALITY;
  p[1] = desired_quality_value;
  p[2] = 0;
#include   
#include
#include 
using namespace cv;
 
int main(int argc, char **argv)
{
    int p[3];
    IplImage *img = cvLoadImage("test.jpg");
 
    p[0] = CV_IMWRITE_JPEG_QUALITY;
 
    p[1] = 10;
 
    p[2] = 0;
 
    cvSaveImage("p1.jpg", img, p);
 
    p[0] = CV_IMWRITE_JPEG_QUALITY;
 
    p[1] = 100;
 
    p[2] = 0;
 
    cvSaveImage("p2.jpg", img, p);
 
    exit(0);
 
}

2.第二种方法,利用imwrite()函数保存图片,同时进行调整压缩图片质量

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

           params中的每个参数成对出现,即paramId_1, paramValue_1, paramId_2, paramValue_2, … ,当前支持如下参数:
JPEG:压缩质量 ( CV_IMWRITE_JPEG_QUALITY ),从0到100(数值越高质量越好),默认值为95。
PNG:compression level ( CV_IMWRITE_PNG_COMPRESSION ) 从0到9。 数值越高,文件大小越小,压缩时间越长。默认值为3。
        PPM, PGM, or PBM:二进制标志 ( CV_IMWRITE_PXM_BINARY ),0 或 1。默认值为1。
 

你可能感兴趣的:(C++,图形图像处理)