我想知道是否有办法在OpenCV中自动选择合理的JPEG压缩级别?
我所获得的当前JPEG尺寸太大,并且将其固定为固定值会感觉很脏。如果我记得像Dreamweaver这样的图像编辑器中存在这些功能。如果没有这样的功能,我也想知道是否有人知道能够在不执行硬盘IO的情况下估计此参数的算法。
std::vector<int> params;
params.push_back(CV_IMWRITE_JPEG_QUALITY);
params.push_back(magic); //Want a way to estimate magic
cv::imwrite("my.jpg",image,params);
答案 0 :(得分:2)
不幸的是,要“优化”JPEG压缩,必须学习并应用有关JPEG压缩的许多技术细节。因此,许多图书馆不提供全套调整参数。 0-100 JPEG质量参数已经是一个很好的折衷方案。
ImageMagick可能具有此类功能。
您正在寻找一种“在OpenCV中自动选择合理的JPEG压缩级别”的方法。
然而,“合理”是主观的,并且取决于图像所有者对给定图像中哪些特征是重要的感知。这意味着对于(不同所有者)x(不同图像)的每种组合,感知可能不同。
cv::imencode
which writes to memory instead of to disk。首先阅读:维基百科上的JPEG compression
在JPEG压缩管道中,jpeglib或libjpeg-turbo的用户可以配置三个压缩步骤:
答案 1 :(得分:0)
很抱歉,在压缩文件之前无法告诉大小。如果您不赶时间,请使用不同的质量值压缩图像,然后选择最佳的图像。