如何降低 OpenCV 中图像的分辨率?

Posted

技术标签:

【中文标题】如何降低 OpenCV 中图像的分辨率?【英文标题】:How to Reduce the Resolution of an Image in OpenCV? 【发布时间】:2013-06-27 12:40:41 【问题描述】:

所以,我有一张来自数字扫描仪的图像,它的分辨率是 26 兆像素。 我想将图像的分辨率降低到 5 兆像素。

是否可以在不损坏内容的情况下降低图像的分辨率?

如果是,如何在 OpenCV 实现中减少它?

任何帮助将不胜感激。 谢谢你

【问题讨论】:

是这个意思还是别的意思?请更具体。 (***.com/questions/8339077/…) “不损坏内容”是什么意思? 不,我之前不是这个意思,我已经用数字扫描仪扫描了图像。不涉及相机。我只需要降低图像的分辨率。 我正在使用扫描仪进行 OCR 项目,所以我所说的“不损坏内容”是指每当我降低图像的分辨率时,它会损坏图像中的字符? 你的意思是用 cv::resize 缩小图像吗?可能会丢失一些数据,这可能对您的内容有害。 【参考方案1】:

您可以使用cv2::resize()

resize(src, dst, Size(), factor, factor, interpolation);

这里可以选择interpolationcv::INTER_LANCZOS4,以获得最佳插值结果。

factor 是采样率,为了从 26mp 转换为 5mp,您可能需要它为 2.28

下采样总是会引入一些信息和细节损失。

【讨论】:

感谢您的回答,这正是我一直在寻找的。​​span> 对于收缩,“因子”将 【参考方案2】:

降低图像的分辨率就是破坏内容的定义。无损图像压缩不会降低图像的分辨率。也就是说,5 兆像素仍然是一个非常高的分辨率,并且比大多数应用程序需要的分辨率更高。例外可能是科学和医学应用。我只会确保您保留原始图像,直到您知道可以使用结果并仔细选择图像压缩方法以减少伪影。

【讨论】:

以上是关于如何降低 OpenCV 中图像的分辨率?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vlfeat 和 opencv 确定 C++ 中图像的 PHOW 特征?

OpenCV中图像的格式Mat 图像深度

Opencv中图像的遍历与像素操作

降低 OpenCV 中的图像分辨率

OpenCV中图像的读取,显示与保存

OpenCV中图像的BGR格式 Img对象的属性说明