我正在尝试使用 OpenCV 调整一组图像的大小。分辨率正确,但图像质量下降。但是,如果我通过 Apple Preview 手动调整大小,图像质量不会受到影响。我正在将所有这些图像缩小,而不是将它们放大。这是比较质量的两张图片。请注意自行车的锯齿状辐条和锯齿状上管:
调整大小错误:
良好的调整大小:
这是我的代码:
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);
我弄乱了插值,但这似乎对图像没有影响。
最佳答案
好吧,明白了。我将其切换回 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);
关于c++ - OpenCV 调整质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200707/