失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 利用Opencv保存图片 并生成JPG格式 调整压缩质量。

利用Opencv保存图片 并生成JPG格式 调整压缩质量。

时间:2023-07-17 01:12:01

相关推荐

利用Opencv保存图片 并生成JPG格式 调整压缩质量。



例如Photoshop软件保存JPG图像时有低、中、高和最佳的保存选项设置,对应生成的图像的大小也不同。用OpenCV生成的图像相对较大,可能类似对应Photoshop最佳的那种保存的,但是我想要相对小一些的图像,请问如何才能用OpenCV设置JPG图像的压缩质量?

通常用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 <opencv2\opencv.hpp> #include<iostream>#include <stdio.h>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("out1.jpg", img, p);p[0] = CV_IMWRITE_JPEG_QUALITY;p[1] = 100;p[2] = 0;cvSaveImage("out2.jpg", img, p);exit(0);}

另外还有一种方法,利用imwrite()函数保存图片,同时进行调整压缩图片质量。

保存图像 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。

如果觉得《利用Opencv保存图片 并生成JPG格式 调整压缩质量。》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。