如何降低 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);
这里可以选择interpolation
为cv::INTER_LANCZOS4
,以获得最佳插值结果。
factor
是采样率,为了从 26mp 转换为 5mp,您可能需要它为 2.28
下采样总是会引入一些信息和细节损失。
【讨论】:
感谢您的回答,这正是我一直在寻找的。span> 对于收缩,“因子”将 【参考方案2】:降低图像的分辨率就是破坏内容的定义。无损图像压缩不会降低图像的分辨率。也就是说,5 兆像素仍然是一个非常高的分辨率,并且比大多数应用程序需要的分辨率更高。例外可能是科学和医学应用。我只会确保您保留原始图像,直到您知道可以使用结果并仔细选择图像压缩方法以减少伪影。
【讨论】:
以上是关于如何降低 OpenCV 中图像的分辨率?的主要内容,如果未能解决你的问题,请参考以下文章