OpenCV调整质量

时间:2016-05-13 03:21:54

标签: c++ opencv image-processing

我正在尝试使用OpenCV调整一组图像的大小。分辨率正确,但图像质量下降。但是,如果我通过Apple Preview手动调整大小,图像质量不会受到影响。我正在使所有这些图像变小,而不是将它们炸掉。这是比较质量的两个图像。请注意自行车的锯齿状辐条和锯齿状顶管:

Bad Resize:

Bad OpenCV resize

好调整大小:

Good Apple Preview resize

这是我的代码:

cv::Mat srcimg = cv::imread(src_filepath);
cv::Mat destimg = cv::imread(lowres_path);
cv::Size img_size = srcimg.size();
int img_width = img_size.width;
int img_height = img_size.height;
double percentage = 1000.0/(img_width);
double new_height = img_height * percentage;
cv::Size new_size = cv::Size(1000.0, new_height);
cv::resize(srcimg, destimg, new_size,0,0,CV_INTER_LANCZOS4);
cv::imwrite(lowres_path, destimg);

我已经搞乱了插值,但这似乎对图像没有影响。

1 个答案:

答案 0 :(得分:3)

好吧,想通了。我将其切换回CV_INTER_AREA并明确设置压缩设置:

cv::resize(srcimg, destimg, new_size,0,0,CV_INTER_AREA);
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);
cv::imwrite(lowres_path, destimg);