OpenCV imwrite增加了png图像的大小

Kar*_*mar 5 compression png opencv image-processing

我正在对png图像进行图像处理.我有以下问题.使用imwrite()函数保存图像后,图像的大小会增加.例如,之前的图像是847KB,保存后它变为1.20 MB.这是一个代码.我只是读了一张图片然后保存它,但是尺寸增加了.我试图设置压缩参数,但它没有帮助.

Mat image;
image = imread("5.png", -1); 

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
compression_params.push_back(0);

imwrite("output.png",image,compression_params);
Run Code Online (Sandbox Code Playgroud)

可能有什么问题?请帮忙.谢谢.

leo*_*loy 5

PNG有几个影响压缩的选项:deflate压缩级别(0-9),deflate策略(HUFFMAN/FILTERED),以及内部预测错误过滤器的选择(或动态选择策略)(AVERAGE,PAETH ...) .这似乎只OpenCV的让你改变的第一个,它有没有一个好的默认值第二.所以,你似乎必须忍受这一点.

更新:查看来源,似乎已经添加了压缩策略设置(投诉后),但没有记录.我想知道这个来源是否已经发布.尝试使用Z_FILTERED设置选项CV_IMWRITE_PNG_STRATEGY,看看会发生什么

有关参数的更多详细信息,请参阅链接的源代码.