如何在 C++ 或 opencv 中调整图像大小而不损失图像质量

Sag*_*tel 4 c++ opencv image

  • 我正在开发一个项目,为此我需要放大图像。

  • 我尝试过 OpenCv 库的re size函数来调整大小。但是图像质量下降了。

  • 假设我有 136x136 尺寸的图像,我想将其尺寸调整为 209x209 且质量相同。我该怎么做?

小智 5

正如评论中所建议的,无法增加图像的大小并在像素之间生成新的信息。所有调整大小方法都涉及原始信息之间的某种插值。

\n

如果您查看OpenCV 文档中的调整大小功能,您将看到以下选项:

\n
    \n
  • INTER_NEAREST - 最近邻插值
  • \n
  • INTER_LINEAR - 双线性插值(默认使用)
  • \n
  • INTER_AREA - 使用像素区域关系重新采样。它可能是图像抽取的首选方法,因为它提供无莫尔\xe2\x80\x99 的结果。但当图像缩放时,与INTER_NEAREST方法类似。
  • \n
  • INTER_CUBIC - 4x4 像素邻域上的双三次插值
  • \n
  • INTER_LANCZOS4 - 8x8 像素邻域的 Lanczos 插值
  • \n
\n

您可能会发现 INTER_CUBIC 或 INTER_LANCZOS4 生成的图像具有更高的“质量”。

\n

  • 在特殊情况下(例如纯黑和纯白图像),inter_nearest 可能是最好的,因为它不会向图像引入新的颜色(例如灰度级别)。但对象边框看起来会更加像素化/块状。 (2认同)