【发布时间】:2016-05-13 13:56:18
【问题描述】:
我正在尝试使用 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);
我弄乱了插值,但这似乎对图像没有影响。
【问题讨论】:
-
能把原图也发一下吗?
-
@DanMašek: i.imgur.com/HYGvpSY.jpg
-
根据文档,“要缩小图像,通常使用 CV_INTER_AREA 插值看起来效果最好”。你试过吗?对我来说,它看起来比使用 Lanczos 插值要好得多。
-
是的,我试过了,但没有任何明显的效果。
标签: c++ opencv image-processing